linux 修改ramdisk内容,移植linux的配置和ramdisk文件系

首先先说linux配置,基本上是用 arch/arm/configs/s3c2410_defconfig 来修改

#cp ‍arch/arm/configs/s3c2410_defconfig .config

#make menuconfig ARCH=arm

配置内核,参考内核配置手册,即每一个项的作用,一般修改的就是system type 里的2410 2440之类的,然后修改一下device driver,看哪个要哪个不要,再修改一下file system

修改device driver时要注意block device里的一个选项,‍Default Ramdisk

它是指你如果用ramdisk文件系统时,引导的ramdisk镜像大小,详情后面有,主要是启动不了

配置完就编译

成功后并不能直接下载到uboot里运行,为什么?缺少头信息,要加,怎么加?

将uboot里的tools/下的mkimage复制到根目录/usr/bin/下,当一个命令来用,

对于mkimage的详情用法看另一文章

对于mkimage里指定的-e -a 地址跟你tftp下载到内存里是不一样的,为什么?因为有一个mkimage的头,大小为40字节,所以要将那地址

-40字节,例如为-a 30008000 则要下载的地址为0x30008000-40字节=0x30007fc

对于ramdisk的制作,可看另一文章,其实就是创一堆文件夹以及用busybox将一些命令复制下去

再用genext2fs 制作ramdisk,再压缩一下,因为太大内核解压不了

但是直接生成的不能直接给内核解压,怎么办?加头信息

也是用mkimage,用法跟上面一样

[ GT2440 ]# set serverip 192.168.0.20

[ GT2440 ]# tftp 30007fc0 uImage.img

TFTP from server 192.168.0.20; our IP address is 192.168.0.69

Filename 'uImage.img'.

Load address: 0x30007fc0

Loading: #################################################################

#################################################################

#####

done

Bytes transferred = 1976436 (1e2874 hex)

[ GT2440 ]# tftp 31807fc0 ramdisk.img

TFTP from server 192.168.0.20; our IP address is 192.168.0.69

Filename 'ramdisk.img'.

Load address: 0x31807fc0

Loading: #################################################################

#################################################################

#################################################################

#########################

done

Bytes transferred = 3215485 (31107d hex)

[ GT2440 ]# bootm 30007fc0 31807fc0

## Booting kernel from Legacy Image at 30007fc0 ...

Image Name: linux-image

Created: 2010-12-01 15:54:56 UTC

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 1976372 Bytes = 1.9 MB

Load Address: 30008000

Entry Point: 30008000

Verifying Checksum ... OK

Loading Kernel Image ... OK

OK

## Loading init Ramdisk from Legacy Image at 31807fc0 ...

Image Name: ramdisk-image

Created: 2010-12-01 14:58:55 UTC

Image Type: ARM Linux RAMDisk Image (gzip compressed)

Data Size: 3215421 Bytes = 3.1 MB

Load Address: 31808000

Entry Point: 31808000

Verifying Checksum ... OK

Starting kernel ...

出现这样就成功,但是还会出现这样问题。。

1、wrong ramdisk image format

这就是头信息不对

2、还有一个是启动到最后面,会提示

‍RAMDISK: Compressed image found at block 0

RAMDISK: incomplete write (2270 != 32768)

之类,这问题就是上面说的内核配置的ramdisk大小不对,要去修改一下内核配置

我将它修改成12288(1024的整数倍)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值