首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式Linux内核和初始化RAM盘制作

嵌入式Linux内核和初始化RAM盘制作


               [原创]嵌入式Linux内核和初始化RAM盘制作
              一.内核制作


              1.  内核下载
              针对设备:三星2410,Linux 2.4.18内核

              标准内核
              http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.18.tar.gz

              ARM补丁
              ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-2.4.18-rmk6.gz


              厂家补丁
              patch-2.4.18-rmk6-swl

              2.  解压内核: tar xzvf  linux-2.4.18.tar.gz

              打arm补丁: gzip –dc patch-2.4.18-rmk6.gz|(cd linux; patch –p1)
              打2410补丁:gzip –dc patch-2.4.18-rmk6-swl6|(cd linux; patch –p1)

              3.  修改内核的主Makefile文件,给定当前的交叉编译器
              CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-


              4.  使用make menuconfig来进行内核编译配置,根据自己需要进行剪裁


              5.  编译内核。Make dep; make clean; make
              zImage。生成的内核为/arch/arm/boot下的zImage

              二.初始化RAM盘制作


              概念:

              在内核调入内存之后,如果存在内存初始镜像(initrd),那么控制会转到其上并执行配置脚本linuxrc。内存的初始镜像使引导加载器加载一个RAM盘,此RAM盘可以作为根文件系统挂接并且能在其上运行应用程序。此后,真正的根文件系统能从不同的设备上挂接(比如光驱或者硬盘)。在挂接了新的文件系统之后,作为根分区的内存初始镜像将成为目录/initrd或者被卸装。
              建初始内存映像文件的主要目的是为了在系统安装(启动)时配置内核模块,内核先以最小方式启动,然后根据需要(询问用户或自动检测)来加载不同模块,然后再正常启动。

              1.mkdir /mnt/loop 建立了loop设备的临时挂接点

              2.dd if=/dev/zero of=/tmp/loop_tmp bs=1k
              count=10240,建立了一个大小为10M的临时文件

              3./sbin/losetup /dev/loop0 /tmp/loop_tmp将设备与临时文件联系起来。如果出现“ioctl:
              LOOP_SET_FD: 设备或资源忙”的提示,说明设备还和一文件联系,可以用/sbin/losetup
              /dev/loop0来看,并可用-d来删除

              4./sbin/mke2fs –m 0 /dev/loop0 将loop0格式化为ext2文件系统

              5.把虚拟盘挂在节点/mnt/loop上,mount /dev/loop0 /mnt/loop –t ext2

              6.将所需文件拷到虚拟盘上

              7.umount /mnt,卸载此文件系统

              8.gzip -9 /tmp/loop_tmp,这样一个内存映像文件就生成了。

51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)
返回列表