基于2.6.19内核小型Linux系统制作与移植
http://tech.ddvip.com 2007年09月07日 社区交流
内容摘要:本文着重介绍如何制作一个基于linux-2.6.19内核的小型Linux操作系统,并将它移植到S3C2410开放板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核、根文件系统的修改、配置、编译、移植等。
引导程序
对于计算机系统来说,从开机上电到操作系统启动需要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。
vivi[4]是韩国MIZI公司为其ARM9系列产品而研发的Bootloader,小而灵巧,这里选用它作为小型Linux系统的Bootloader。
首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1所示。
根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的修改。
然后在配置菜单中导入smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。
接着,便可把vivi下载到目标板Flash的相应位置。
内核
修改内核
首先,修改内核源码linux-2.6.19下的Makefile文件,指定目标代码类型与编译器:SUBARCH :=arm;CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-。
然后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中根据表1修改内核中的Flash分区信息。这里提醒读者,2.6.16(含)以前内核的源码中没有Flash分区信息,所以需要增加新的分区信息;而在2.6.17(含)以后内核的源码中已含Flash分区信息,需要的只是修改分区信息。
内核Flash分区信息必须与vivi的Flash分区信息相一致。因为,vivi的Flash分区中的地址是内核及文件系统下载到Nand flash的真正地址;而内核在启动时读的却是内核Flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动内核或读取文件系统。
最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止Nand flash差错检测: chip->eccmode = NAND_ECC_NONE;。
责编:豆豆技术应用
- Linux/Unix 新闻
- Linux/Unix 入门
- Linux/Unix 命令
- Linux/Unix 安装
- Linux 嵌入式系统
- Linux/Unix 编程
- Linux/Unix 管理
- Linux/Unix 桌面
- Linux/Unix 内核
- Linux/Unix 软件
- SCO Unix
- NetBSD
- OpenBSD
- Redhat/Fedora Linux
- 手机
- Linux/Unix find 搜索命令
- Linux/Unix vi 命令
- Linux/Unix kde 桌面环境
- Linux/Unix GNOME 桌面环境
- Linux/Unix Make 命令
- Linux/Unix crontab 命令
- Linux/Unix ext3 文件系统
- Linux/Unix 文件系统详解
- Linux/Unix ADSL 拨号设置
- Linux/Unix GRUB 配置及应用
- Linux/Unix nfs配置
- Linux/Unix 硬件信息查看及管理
- Linux/Unix 优化
- Linux/Unix 交换分区Swap管理及应用
- Linux/Unix 用户管理
- Linux/Unix Ramdisk
- Linux/Unix 密码恢复管理
- Linux/Unix 文件删除恢复
- Linux/Unix fdisk分区
- Linux/Unix lvs负载均衡管理
- Linux/Unix root用户
- Linux/Unix 集群
- Linux/Unix 日志
- 更多Linux/Unix专题……