snakeemail的笔记 https://bbs.21ic.com/?420339 [收藏] [复制] [RSS]

日志

s3c2440 ramdisk 启动

已有 217 次阅读2016-11-10 19:48 |系统分类:兴趣爱好

1. 编译kernel,使kernel支持16M ext2格式的ramdisk
 sudo make menuconfig
选中ext2, device drivers -> block devices --> Default RAM disk size 选为16M.
然后make uImage

2.生成ramdisk image
genext2fs -b 16384 -d fs_mini ramdisk_16M

mount到/mnt看下,
sudo mount -t ext2 -o loop ramdisk /mnt
sudo umount /mnt

gzip -v9 ramdisk

3.启动
uboot传给内核的参数, initrd表示init ramdisk放在0x30800000,大小16M,最开始的启动程序是根目录下面的linuxrc程序,控制台为ttySAC0, 根文件系统是/dev/ram
setenv bootargs initrd=0x30800000,16M init=/linuxrc console=ttySAC0 root=/dev/ram
启动,由于根文件系统在上面的命令行传入,所以bootm命令只用输入kernel在内存的地址
bootm 0x30007FC0

4.kernel和ramdisk在内存里面的分布
kernel: 0x30007FC0,大约从0x3000_0000偏移1M开始,这里kernel的大小大约2M,自解压后会更大,所以把ramdisk的空间向后方,偏移到8M开始

遗留问题:
1. 64M内存,可以弄32M的ramdisk吗?
2.内存里面有类ramdisk,那么内核怎么分配内存空间的?



路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)