从ramdisk根文件系统启动Linux成功

来源:互联网 发布:李玮 靠谱网络 编辑:程序博客网 时间:2024/06/05 07:30

bootargs=initrd=0x500000000,0x48E99A6 root=/dev/ram rw console=ttySC0
从ramdisk根文件系统启动Linux成功

跳转到要制作的rootfs的上一级目录#genext2fs -b 8192 -d rootfs ramdisk#gzip -9 -f ramdisk将该ramdisk以最优方式压缩为ramdisk.gz

-b是指制作的ramdisk大小为8MB(8192/1024=8, 8MB指的是rfs文件夹的大小) ,可改
-d是指要制作成ramdisk的根文件系统目录(rootfs指的是根文件所在的文件夹名)
最后的ramdisk是制作出来的ramdisk的名字,当然可以改名了。
genext2fs -b 1024 -d rootfs ramdisk.image
报错误了: genext2fs: couldn’t allocate a block (no free space)
经过多次查找发现这个是空间分配不对
只要改成
genext2fs -b 102400 -d rootfs ramdisk.image
这样就通过了
貌似这个是空间大小太小了,这种先使用大的后面使用小的

uboot bootargs bootcmd bootm启动参数的意义:(http://blog.csdn.net/cgzhello1/article/details/7852033)

uboot里面运行
tftp 0x500000000 ramdisk.gz
mmc dev 1
mmc write 0x500000000 0x16 0xcbce

0x500000000是指在RAM中从该地址读取数据放到EMMC中,0x16为起始地址,大小为0xcbce(0xcbce转化为十进制,再乘以512,即为ramdisk.gz的大小,单位是kb)

mmc write 0x48080000 0xcbe3 51df(视具体内核大小而定,ll后用byte除以512再转换成16进制)

mmc write 0x48000000 fd1b(0xcbe3+51df) 7e (dtb大小,通image大小方法计算)

对于内核
1. 在.config里面加上
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16

CONFIG_BLK_DEV_RAM_SIZE=819600重新编译
配置内核支持的ramdisk的大小(KB)

设置启动参数:

baudrate=115200bootargs=initrd=0x500000000,0x48e99A6 root=/dev/ram rw console=ttyscobootcmd=run loadramdisk; run dlkernel; booti 0x48080000 - 0x48000000bootdelay=3dlkernel=mmc read 0x48080000 24764 648e; mmc read 0x48000000 2abf3 85ethact=ravbethaddr=2E:09:0A:00:C1:13fileaddr=48000000filesize=e862ipaddr=192.168.1.200loadramdisk=mmc dev 1; mmc read 0x500000000 16 2474Dserverip=192.168.1.4stderr=serialstdin=serialstdout=serialstopusb=usb stopusbstart=usb stopver=U-Boot 2015.04 (Jul 21 2017 - 17:13:09
阅读全文
0 0
原创粉丝点击