[原创]嵌入式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,这样一个内存映像文件就生成了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |