内核配置中 ramdisk 大小修改
来源:互联网 发布:阿里云服务器怎么镜像 编辑:程序博客网 时间:2024/06/04 20:11
1.修改内核配置选项
进入内核源码目录linux-2.6.32.2目录
#cp config_mini2440_x35 .config
#make menuconfig ARCH=arm
Note:修改(8192)Default RAM disk size kbytes选项为(4096)Default RAM disk size kbytes, 之所以修改是因为我之后制作的ramdisk是4096KB大小的。当然如果你想制作8192KB大小的ramdisk,这里就要对应为8192了,以此 类推。但是最小系统嘛,是不用那么大的ramdisk的。此项的默认配置就是(4096),以前我改过这个配置,所以是(8192)了。如果这个大小和你 做的ramdisk不匹配,则启动时仍然会出现kernel panic内核恐慌,提示ramdisk格式不正确,挂载不上ramdisk。
b):或者不修改.config的的第310行CMDLINE定义,而是用u-boot的bootargs环境变量来传递启动参数。
同样也是修改该环境变量为bootargs=initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M
并saveenv保存u-boot环境变量
以上a),b)的效果是一样的。
4.编译内核
#make zImage ARCH=arm CROSS_COMPILE=arm-linux-
编译完成后在当前目录下就出现了zImage内核映像了。
进入内核源码目录linux-2.6.32.2目录
#cp config_mini2440_x35 .config
#make menuconfig ARCH=arm
(1).打开配置菜单,修改两个配置项,分别是:
a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项
b):Device Drivers-->Block devices-->选择 RAM block device support 项
c):并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。
d):device driver->block device里的一个选项,Default Ramdisk 设置ramdisk的大小.16384
Note:修改(8192)Default RAM disk size kbytes选项为(4096)Default RAM disk size kbytes, 之所以修改是因为我之后制作的ramdisk是4096KB大小的。当然如果你想制作8192KB大小的ramdisk,这里就要对应为8192了,以此 类推。但是最小系统嘛,是不用那么大的ramdisk的。此项的默认配置就是(4096),以前我改过这个配置,所以是(8192)了。如果这个大小和你 做的ramdisk不匹配,则启动时仍然会出现kernel panic内核恐慌,提示ramdisk格式不正确,挂载不上ramdisk。
(2).进入File systems菜单,选上<*> Second extended fs support
ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。
这样就为内核添加好了ramdisk启动功能和ramdisk的驱动支持了。
2.修改内核启动参数
ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。
这样就为内核添加好了ramdisk启动功能和ramdisk的驱动支持了。
2.修改内核启动参数
方法有二:
a):修改.config的第310行,修改CONFIG_CMDLINE=""的定义
修改为CONFIG_CMDLINE="initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M"
保存。
意思为从ramdisk启动,ramdisk压缩文件起始地址在内存地址0x31000000处,文件大小为0x400000。
此参数也可以在make menuconfig ARCH=arm时进入Boot options菜单,然后在Default kernel command string里修改。效果是一样的
a):修改.config的第310行,修改CONFIG_CMDLINE=""的定义
修改为CONFIG_CMDLINE="initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M"
保存。
意思为从ramdisk启动,ramdisk压缩文件起始地址在内存地址0x31000000处,文件大小为0x400000。
此参数也可以在make menuconfig ARCH=arm时进入Boot options菜单,然后在Default kernel command string里修改。效果是一样的
b):或者不修改.config的的第310行CMDLINE定义,而是用u-boot的bootargs环境变量来传递启动参数。
同样也是修改该环境变量为bootargs=initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M
并saveenv保存u-boot环境变量
以上a),b)的效果是一样的。
4.编译内核
#make zImage ARCH=arm CROSS_COMPILE=arm-linux-
编译完成后在当前目录下就出现了zImage内核映像了。
5.其实 uImage就是在zImage的开头部分增加了一个64字节的内核映像说明。说明一下:zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文 件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另 外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。
5.制作uImage内核映像
由于使用的Bootloader是u-boot,所以要将zImage转化为uImage,方法如下:
1.把zImage 拷到uboot 的tools 目录下
2. ./mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "Linux kernel Image" -d zImage uImage-ramdisk
说明:mkimage工具是u-boot格式uImage内核映像制作工具。如果成功编译u-boot之后,它会在u-boot源码树下的tools目录 之下。建议将其拷贝到宿主机的/sbin/目录下,以方便使用。
6.还有一个是启动到最后面,会提示
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (2270 != 32768)
之类,这问题就是上面说的内核配置的ramdisk大小不对,要去修改一下内核配置
我将它修改成12288(1024的整数倍)
- 内核配置中 ramdisk 大小修改
- 内核配置ramdisk
- 修改ramdisk大小的方法
- 修改ramdisk
- 系统内核修改LCD大小
- ramdisk配置
- 3.10内核中使用dtb的ramdisk启动方法
- 修改Android内核配置
- Android: 修改ramdisk.img
- android 修改ramdisk.img
- 修改ramdisk文件总结
- android 修改ramdisk.img
- 修改内核和文件系统分区大小
- 如何将ramdisk.img 编译进内核和修改init.rc
- 如何将ramdisk.img 编译进内核和修改init.rc
- Linux内核Ramdisk(initrd)机制
- 内核,initrd,ramdisk,关系,用途
- Linux内核Ramdisk(initrd)机制
- JS实现浏览器菜单命令
- 项目经理如何提升效率
- C# 右下角的通知区域显示 和 隐藏主窗体 以及 为通知区域图标添加菜单 等
- java获取远程文件(保证文件的完整性,不会出现无法打开的情况)
- Ubuntu用户及用户组管理
- 内核配置中 ramdisk 大小修改
- 深入学习android之AlarmManager
- mtk android 编译命令
- tuxedo12.1.1.0 libtux导出函数的错误
- Emacs常用命令
- 查看Debian的版本信息
- php面向对象开发之——装饰模式
- 如何在C#中调用Excel
- Linux 查看CPU信息、机器型号等硬件信息