一、tftp加载Linux内核及rootfs
(一)背景介绍
(二)tftp加载Linux内核及rootfs过程
1、将Linux内核镜像、设备树、根文件系统下载到tftp的工作目录
2、修改权限,重启tftp
3、设置开发板和ubuntu网络连接
*4、设置自启动环境变量
开发板的实际内存地址是0x40000000-0x80000000,共一个G。
0x40000000-0x410000000保留,用于uboot给内核传参。
按照顺序内核、根文件、设备树:启动linux内核,告诉Linux内核根文件系统和设备树的地址。
5、设置uboot环境变量自启动参数bootargs
6、重启开发板,自启动会自动下载和运行Linux内核
(三)自启动tftp下载的信息
1、打印开发板的情况
2、进入自启动下载Linux镜像、根文件系统、设备树
3、下载完校验
4、uboot执行结束,内核启动
软硬件启动,打印信息
5、挂载根文件系统,Linux系统启动
6、执行Linux命令
二、EMMC加载Linux内核及rootfs
tftp方式,如果开发板不联网或者没有网络,系统无法运行。
MMC一共是4G,一块是512字节。
(一)EMMC加载Linux内核及rootfs流程
1、下载内存镜像到内存,并写入指定扇区
2、下载设备树到内存 ,并将设备树写入EMMC中指定的扇区
3、下载根文件系统镜像到内存中
4、修改启动参数
5、重启开发板
(二)重启开发板后信息
1、uboot打印开发板信息
2、 MMC加载内核、根文件系统、设备树到内存
3、uboot结束,系统开始
4、挂载根文件系统
5、实现Linux命令
三、tftp加载Linux内核nfs挂载rootfs
使用tftp更适合开发,使用MMC加载更适合生产。本节我们介绍的这种方法是最适合开发的方式:tftp+nfs结合的方式。
具体方法:用tftp将内核和设备树加载到内存,将根文件系统以网络文件的形式和开发板共享。
(一)tftp加载Linux内核nfs挂载rootfs流程
1、将根文件目录放到NFS的工作目录下
2、修改启动参数
3、重启tftp
4、给开发板重新上电
加载linux内核:
加载设备树:
nfs挂载根目录系统
5、使用linux命令
文件实际存在于ununtu中,只是共享到开发板。
6、交叉编译
在乌班图编辑和编译
在开发板执行
7、uboot传递给内核的参数
根文件系统的挂载方式:nfs
根文件的ip:ubuntu下的/opt/4412/rootfs
console:linux通过串口2打印信息
init:linux启动后的第一个进程
ip:开发板ip,告诉内核开发板自身ip
四、EMMC加载uboot
1、将uboot放到tftp的工作目录下,并给最高权限。
2、开发板重新上电,下载uboot
3、将内核镜像安装到EMMC中指定扇区
因为要将uboot下载到引导分区中,因此需要开/关引导分区
4、设置开发板的为EMMC启动
5、上电,启动的是EMMC中的uboot所以环境变量需要重新设置
设置开发板ip
设置服务器
设置自启动
设置bootargs
注意这里的ip应为192.168.0.200
serverip:192.168.0.100
6、重启nfs和tftp服务器
五、作业
1.简述uboot中bootargs环境变量的功能?
2.使用tftp加载Linux内核和设备树,nfs挂载rootfs,将启动完Linux后的界面截图提交
1、向内核传递参数:首先告诉内核根文件系统挂载的服务器的路径,然后是读写权限,接着告诉内核在哪个端口打印信息,最后告诉内核开发板的ip地址。