Linux移植之移植步骤

发布者:meirong最新更新时间:2024-08-29 来源: cnblogs关键字:Linux  移植  移植步骤 手机看文章 扫描二维码
随时随地手机看文章

在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:


1、将网上下载的内核源码文件linux-2.6.22.6.tar.bz2放入/work/system路径下。


2、切换到/work/system,使用tar xjf linux-2.6.22.6.tar.bz2解压缩内核源码文件得到一个名为linux-2.6.22.6的文件夹


3、cd linux-2.6.22.6切换到内核文件夹


4、修改顶层Makefile文件使得 ARCH ?= arm;CROSS_COMPILE  ?= arm-linux-


5、执行make s3c2410_defconfig修改内核配置,最终会生成一个.confg文件


6、执行make menuconfig配置内核,会读取.confg文件然后根据这个文件的基础上更改配置,这里配置先不用更改,直接退出


7、make uImage之后,将产生的uImage文件通过UBOOT的usb下载功能下载到指定地址,内核分区


8、在uboot界面执行boot启动内核,可以看到内核启动之后出现一片乱码


9、更改CPU的时钟晶振,找到 (archarmmach-s3c2440Mach-smdk2440.c)文件,将327行的s3c24xx_init_clocks函数里的16934400改为12000000,代表12M晶振


324        static void __init smdk2440_map_io(void)

325        {

326            s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

327            s3c24xx_init_clocks(12000000);//将16934400改为12000000

328            s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

329        }


10、将更改过的代码继续编译make uImage,重复第7步骤。


11、发现乱码消失了,但是还是不能启动位于nand flash上的第四分区的根文件系统


12、更改MTD分区,找到 (archarmplat-s3c24xxCommon-smdk.c)文件,将smdk_default_nand_part数组改为如下的形式,这表示将nandflash分为四个区:bootloader区、params区、kernel区、root区。


118    static struct mtd_partition smdk_default_nand_part[] = {

119        [0] = {

120            .name    = 'bootloader',

121            .size    = 0x00040000,

122            .offset    = 0,

123        },

124        [1] = {

125            .name    = 'params',

126            .offset = 0x00040000,

127            .size    = 0x00020000,

128        },

129        [2] = {

130            .name    = 'kernel',

131            .offset = 0x00060000,

132            .size    = 0x00200000,

133        },

134        [3] = {

135            .name    = 'root',

136            .offset    = 0x00260000,

137            .size    = 0x0fda0000,

138        }

139    };


13、将更改过的代码继续编译make uImage,重复第7步骤。


14、发现内核还是不能挂接根文件系统,出现No filesystem could mount root, tried:  ext3 ext2 cramfs msdos vfat romfs字样。


15、增加yaffs2文件系统支持nandfalsh


  a、从网上下载的yaffs_source.tar.gz放到/work/system目录下

  b、tar xzf yaffs_source.tar.gz解压得到Development目录下分别有yaffs2和yaffs两个文件夹,其中yaffs2是比较新的文件系统

  c、进入yaffs2文件夹后,./patch-ker.sh c /work/system/linux-2.6.22.6打补丁到内核所在目录


    上述命令完成以下三件事情


      1)、修改内核fs/Kconfig文件,增加source 'fs/yaffs2/Kconfig',表示读入fs/yaffs2/Kconfig这个Kconfig文件。


      2)、修改内核fs/Makefile文件,增加obj-$(CONFIG_YAFFS_FS) += yaffs2/,表示增加yaffs2/目录编译


      3)、将yaffs2源码目录下的Makefile.kernel文件复制为内核fs/yaffs2/Makefile


          将yaffs2源码目录下的Kconfig文件复制到内核fs/yaffs2/目录下


          将yaffs2源码目录下的*.c、*.h文件(不包括子目录下的文件)复制到内核fs/yaffs2/目录下

  d、make menuconfig配置内核支持yaffs2文件系统

    File systems

    Miscellaneous filesystems

    <*>YAFFS file system support


16、将更改过的代码继续编译make uImage,重复第7步骤。


17、发现内核可以启动位于root分区的根文件系统了,移植成功


关键字:Linux  移植  移植步骤 引用地址:Linux移植之移植步骤

上一篇:Linux移植之配置过程分析
下一篇:u-boot之怎么实现分区

推荐阅读最新更新时间:2026-03-20 11:35

QWT移植到嵌入式linux步骤
注意:安装QWT之前要确保QT已经安装完成。包括X86和ARM版本QT 编译X86下的QWT 1.设置环境变量 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-x86/bin/:$PATH 2.解压QWT源码 tar -jxvf qwt-5.2.0.tar.bz2 3.重命名该文件夹 mv qwt-5.2.0 qwt-5.2.0-x86 4.执行qmake 5.执行make 编译ARM下的QWT 1.设置环境变量 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin/:$PATH 2.解压QW
[单片机]
Linux2.6.36移植到飞凌S3C6410开发板 步骤
今天终于让linux内核在飞凌ok6410的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可言语形容啊, 了解其中艰辛,将自己移植步骤与心得与大家分享,希望对初踏次领域之人有所帮助,我所写的成果一部分也是网上前辈的所作,并非本人原创。 一、 移植环境 主 机:VMWare-Ubuntu 开发板:飞凌OK6410 nandflash,Kernel:2.6.36.2 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-1.1.6 注:编译器和u-boot 都是飞凌开发板自带的 二、 源码获得 内核源码到http://www.all.kernel.org
[单片机]
单片机脚本语言移植lua到stm32MDK的步骤
Lua是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua脚本能够非常easy的被C/C++ 代码调用,也能够反过来调用C/C++的函数,这使得Lua在应用程序中能够被广泛应用。不只作为扩展脚本,也能够作为普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和维护。 Lua的目标是成为一个非常easy嵌入其他语言中使用的语言。大多数程序猿也觉得它的确做到了这一点。 非常多应用程序使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这当中包含魔兽世界、博德之门、愤慨的小鸟、VOCALOID3 等。 MDK下lua移植到stm3
[单片机]
基于TQ2440的u-boot-1.1.6移植(基本步骤
参考资料: 《移植u-boot-1.1.6到TQ2440文档》 天嵌移植好的源码 移植环境 系统:华清远见虚拟机搭建的Ubuntu12.04 开发板:TQ2440 交叉编译器:crosstools_3.4.5_softfloat CPU:S3C2440 SDRAM:64M NOR Flash:2M NAND Flsah:256M NET:DM9000 移植过程 1、源代码下载 ftp://ftp.denx.de/pub/u-boot/ 下载u-boot-1.1.6.tar.bz2并解压到Ubuntu中 2、文件删减 board/下除 smdk2410 以外的所有其它目标板文件夹删除 cpu/下除 arm920t 以外的
[单片机]
基于TQ2440的u-boot-1.1.6<font color='red'>移植</font>(基本<font color='red'>步骤</font>)
关于FreeRTOS移植到STM32F103上的步骤以及注意事项
因为最近比较有时间,而且发现自己对于STM上可以跑的操作系统相对陌生。所以选择几个操作系统进行移植和玩几个DEMO理解一下。虽然理解的不是很深入,但是如果项目需要的话,只是移植,进行多任务的操作。应付一下还是绰绰有余的。之前移植了uCosII.后续有需要会总结一下。这里先对FreeRTOS相关的问题进行总结。因为个人能力有限。有什么不对的地方请大家批评,写这个主要是为了记录一下自己的移植过程。 1、第一步肯定是先到官网去下载关于FreeRTOS的源码 下面的网址是官方最新源码的下载地址: https://sourceforge.net/projects/freertos/files/latest/download?source=
[单片机]
关于FreeRTOS<font color='red'>移植</font>到STM32F103上的<font color='red'>步骤</font>以及注意事项
uCOS-II的移植步骤
说明:将V2.92移植到STM32F107ZET6和STM32F107VCT6. 关于uCOS的移植,其实要说难也难,要说简单也简单。简单的是现在官方都已经移植好了,难的是自己写那个汇编的移植代码。废话不多说,直接上移植步骤和注意事项。 第一步:到官网下载最新版本的uCOS-II V2.92,在uCOS-II的文件夹下有三个这样的文件主要有这两个移植的文件,在DOC文件夹下主要是移植的说明和性能的测试结果, 其中uCOS-II-RefMan和uCOS-II-CfgMan比较有参考价值,第一个文件对每个函数进行了说明,重要的是给出了大部分函数的应用实例。第二个就是我们移植好后的配置文件了。还有一个重要的文件就是很重要的
[单片机]
Linux移植Linux驱动交叉编译环境搭建
需要工具: 1.Linux内核源码包,可在http://www.kernel.org/pub/linux/kernel/中去下载自己需要的版本,我们这里我们使用的内核为 linux-3.0.8.tar。 2.需要挂载的芯片源码,这里使用三星的S5PV210为例,代码包为rootfs_fs210.tgz的一个压缩包 3.交叉工具链,toolchain-4.5.1-farsight.tar.bz2。 1.我们要移植配置Linux-3.0.8系统,这里我是直接在用户目录下使用Samba直接建立个共享文件夹的,在Windows中直接把想要需要的文件放在其中,然后在linux中操作文件。正如下图所示,将.bz2文件放在s5PV2
[单片机]
<font color='red'>Linux</font>的<font color='red'>移植</font>与<font color='red'>Linux</font>驱动交叉编译环境搭建
Linux内核移植初探
内核移植的梯度: 初级:根据芯片公司的参考配置,编译开发板内核并了解执行过程 中极:添加内核驱动的方式方法 高级:修改或添加BSP包 linux内核特性: 可移植性强、支持的硬件平台广泛;超强的网络功能;多任务多用户系统;模块化的设计 五大子系统: 进程管理;内存管理;文件系统;网络协议;设备管理 内核获取路径:芯片厂商、内核源码官方 linux内核的目录结构层次结构: 平台相关目录树:arch目录下 平台无关目录树:其它 crypto目录:算法、加密涉及的源码目录 Documentation目录:内核官方文档 fs目录:文件系统的信息 ipc目录:进程间通信的机制
[单片机]
<font color='red'>Linux</font>内核<font color='red'>移植</font>初探
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved