最新linux内核+文件系统(ramdisk)编译

开发板:s3c2410

各种工具版本:

busybox:busybox-1.13.3(从http://www.arm9.net/download.asp下载busybox-1.13.3-mini2440.tar解压)

linux:linux-2.6.32.2(从http://www.arm9.net/download.asp下载linux-2.6.32.2-mini2440-20110413.tar解压)

gcc (arm-linux-gcc-3.4.1.tar,安装在、home/jimmy/usr/local/3.4.1)

mtd:(mtd-snapshot-20050519.ta,安装在home/jimmy)

zlib(mtd依赖它):(zlib-1.2.3.tar 安装在home/jimmy)

u-boot-1.1.4(/home/u-boot-1.1.4,因为软浮点问题,用2.95.3编译 make smdk2410_config;make CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-)


制作的镜像(放在/tftpboot中):

1. uImage_new_ramdisk

  •         make menuconfig 记得选择ramdisk

                          a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项

                          b):DeviceDrivers-->Block devices-->选择 RAM block devicesupport 项

                         修改(4920)Default RAM disk size kbytes选项为(8192)Default RAM disk size kbytes

                         特别要注意的一点是,ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。

                        所以一定要在make menuconfig的时候进入   File systems菜单,选上<*>Second extended fs support。以提供内核对ext2文件系统的支持。


  • /usr/src/linux-2.6.32.2/.config中initrd=0x30800000,0x800000大小要与制作的ramdisk一致,否则会报错EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #XX

           CONFIG_CMDLINE="initrd=0x30800000,0x800000 root=/dev/ram rw init=/linuxrc console=ttySAC0,115200"

2.ramdisk.gz(由/home/ramdiskfs制作,含busybox1.13.3)

>cp etc-linux/* ramdiskfs/etc/

记得修改 inittab中的ttyS0为ttySAC0

>../genext2fs -b 8192 -d ramdiskfs/ ramdisk

>gzip -9 -f ramdisk
>mv ramdisk.gz  /tftpboot


 3.u-boot操作

>setenv bootargs initrd=0x30800000,0x800000 root=/dev/ram rw init=/linuxrc console=ttySAC0,115200

>tftp 30800000 ramdisk.gz

>tftp 30008000 uImage_new_ramdisk

保存内核镜像到nand flash

> nand erase 30000 2d0000(大小)

>nand  write 30008000 30000 1dc100(内核实际大小)

保存ramdisk到nandflash的mtblock4(本来是给cramfs用的)

"U-Boot-1.2.0",                        0-128k(0x0-0x20000,大小0x20000
"U-Boot-1.2.0 Parameter",      128k-192k(0x20000-0x30000,大小0x10000)
 "Linux2.6.22.2 Kernel",          192k-5M(0x30000-0x500000,大小0x2d0000)
"Root-JFFS2",                         5M-10M(0x500000-0xA00000,大小0x500000)
 "Boot-Root(cramfs)",             10M-20M (0xA00000-0x1400000,大小0xA00000)
 
"YAFFS",                                 20M-64M (0x1400000-0x4000000,大小0x2C00000)
 

> nand erase 0xA00000 0xA00000(大小)

>nand write 30800000 0xA00000 dad3a(ramdisk实际大小)




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值