在ARM中使用Ramdisk
来源:互联网 发布:房屋租赁软件 编辑:程序博客网 时间:2024/06/06 00:28
在ARM中使用Ramdisk
Linux启动时,initrd可以在内存中,也可以在 Flash或其它可用的设备上;
initrd文件格式为: romfs/Minix/ext2/gzip;相关的函数:drivers/block/rd.c: identify_ramdisk_image ;
加载位置: init/main.c: prepare_namespace;
需要的参数为:initrd_start 和 initrd_end;
ARM如何传递initrd参数:ARM传递initrd参数可以分为两种情况:
1.从外部获取的情况:
arch/arm/kernel/setup.c: 从 TAG参数中获取(tags简单来说内存中一段具有一定格式的标签数据和参数,核心和Loader所共知的一种格式,由loader来构造,由核心来读取);通过Loader或核心配置的命令行参数中应包含 root=/dev/ram的参数;
2.不从外部获取的情况:
可以在 fix_up 中来设置,就像上面代码中提到的一样:
aster2_fixup(struct machine_desc *desc, struct param_struct *unused,char **cmdline, struct meminfo *mi){ ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); setup_ramdisk(1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE); setup_initrd(0x04200000, 4 * 1024 * 1024);}
这段代码的效果有几个:
(1) 第一行:设置根文件系统为 ramdisk(相当于root=/dev/ram0,这种情况下核心命令行参数可以不需要这一行)
(2) 第二行:加载ramdisk;
(3) 第三行:通过setup_initrd设置initrd的参数,即(虚拟的)起始和结束地址;
Loader向内核传参数通过这样的代码: BOOT_PARAMS(0x04000100); 0x04000100是个非常重要的地址,核心将从这个地址开始分析 tag参数,可以传递的参数包括:物理内存信息(ATAG_MEM)、ramdisk信息(ATAG_RAMDISK已经不再使用),initrd信息(ATAG_INITRD2),序列号(ATAG_SERIAL),版本号(ATAG_REVISION),命令行参数(ATAG_CMDLINE)等。Loader可以部份或全部设定这些标记。
传递 initrd 参数的条件是, image文件中包含 initrd文件,即通过 mkimage生成一个核心与initrd混合的image文件,然后用bootm,这个参数就可以传给核心了。核心代码中定义的参数地址BOOT_PARAMS(0x04000100)与u-boot中的参数地址必须一致。如果要能加载 initrd 到 ramdisk中,那么 Loader应该将 initrd加载到 (虚)0x04200000位置,让Loader自已传参数给核心
- 在ARM中使用Ramdisk
- 在linux中使用ramdisk文件系统
- 在linux中使用ramdisk文件系统
- ARM中的Ramdisk的使用
- ARM中的Ramdisk的使用
- 在Linux下使用RamDisk
- ramdisk 在android中的使用
- 在Linux下使用RamDisk
- ramdisk 在android中的使用
- linux中ramdisk的使用
- linux中ramdisk的使用
- ramdisk.img在android中的使用
- ramdisk.img在android中的使用
- Ramdisk使用
- 在Mac OS X中创建RamDisk 性能小提速
- 在ramdisk中chroot真正引导真正的文件系统
- 在ARM交叉编译器中使用嵌入式汇编
- 在μVision中使用CodeSourcery GNU ARM工具链
- Android应用程序中加载进度设计
- Linux平台Makefile文件的编写基础篇
- [Linux]Crond configuration in Ubuntu
- [Linux]Vi Command
- [Linux]Add User Sudo Privileges
- 在ARM中使用Ramdisk
- [Linux]鸟哥的linux私房菜-shell RE
- 关于管理中的一些总结
- [Linux]Apt Commands
- join连接区别
- TMS320DM642StudyReport
- 查看当前命令行所用shell
- 线性排序之基数排序
- linux bash文件中变量指定方式