[原创]嵌入式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,这样一个内存映像文件就生成了。 |