uboot中ramdisk启动linux的两种方法【转】

转自:https://blog.csdn.net/dropping_1979/article/details/20628109

首先要确保内核支持ramdisk启动:

The configuration of the kernel is as follow:
     1) General setup-->[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 
                          [*]   Support initial ramdisks compressed using gzip
                          [*]   Support initial ramdisks compressed using bzip2
2)device driver-->Block devices--><*>   Loopback device support
                                               <*>   RAM block device support
                                               (16384) Default RAM disk size (kbytes)
3)ext2 filesystem support, enalbed by default

相关配置如上。

第1种:

setenv ramdiskimage 'ramdisk.gz.uboot'
setenv ramdiskaddr '0x2000000'
setenv ramload 'tftp ${loadaddr} ${bootimage};tftp ${ramdiskaddr} ${ramdiskimage}; tftp ${fdtaddr} ${fdtimage}'
setenv ramboot 'setenv bootargs console=ttyS0,115200 root=/dev/ram rw rootfstype=ext2;bootz ${loadaddr} ${ramdiskaddr} ${fdtaddr}'
setenv bootcmd 'run ramload;run ramboot'

需要把ramdisk.gz用mkimage增加头部:

sudo mkimage -n 'uboot ext2 ramdisk rootfs' -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.gz.uboot

mkimage -A arch -O os -T type -C comp -a addr -e ep \
              -n name -d data_file image
      -A ==> set architecture to 'arch' 体系结构
      -O ==> set operating system to 'os' 操作系统
      -T ==> set image type to 'type' 映像类型
      -C ==> set compression type 'comp' 压缩方式
      -a ==> set load address to 'addr' (hex) 加载地址
      -e ==> set entry point to 'ep' (hex) 入口地址
      -n ==> set image name to 'name' 映像文件名
      -d ==> use image data from 'datafile' 制作映像的源文件

 

第2种:比较传统的启动方法

setenv ramdiskimage 'ramdisk_115200.gz'
setenv ramdiskaddr '0x2000000'
setenv ramload 'fatload mmc 0:1 ${loadaddr} ${bootimage};fatload mmc 0:1 ${ramdiskaddr} ${ramdiskimage}; fatload mmc 0:1 ${fdtaddr} ${fdtimage}'
setenv ramboot 'setenv bootargs console=ttyS0,115200 root=/dev/ram rw  rootfstype=ext2 initrd=0x2000000,16M;bootz ${loadaddr} - ${fdtaddr}'

posted @   Sky&Zhang  阅读(1448)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
历史上的今天:
2019-10-29 08 在设备树里描述platform_device【转】
点击右上角即可分享
微信分享提示