uboot启动linux,uboot中ramdisk启动linux的两种方法
首先要確保內核支持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}'
總結
以上是生活随笔為你收集整理的uboot启动linux,uboot中ramdisk启动linux的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序的多文件组织,C代码多文件的组
- 下一篇: 日本大正年间有珍珠吗?