Linux移植之移植步骤

Linux移植之移植步骤在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:1、将网上下载的内核源码文件linux-2.6.2

大家好,又见面了,我是你们的朋友全栈君。

在这里总结一下我在移植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的时钟晶振,找到 (arch\arm\mach-s3c2440\Mach-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分区,找到 (arch\arm\plat-s3c24xx\Common-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分区的根文件系统了,移植成功

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155542.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IDEA使用JDBC连接MySQL数据库详细教程「建议收藏」

    IDEA使用JDBC连接MySQL数据库详细教程「建议收藏」首先需要保证你已经成功安装mysql接下来下载连接MySQL数据库的驱动使用JDBC连接MySQL数据库的驱动为Connentor/J,这里以最新版本的8.0为例解压zip文件,随便解压到一个地方就好,当然作为程序员,需要有好习惯的创建java项目,导入mysql-connector-java-8.0.13.jar包下面再来看下导入jar的步骤写代码//导入包importja…

    2022年7月13日
    50
  • Python控制手机_能控制玩手机的软件

    Python控制手机_能控制玩手机的软件1.配置Python环境变量Python环境变量安装较为简单,比较常用的方式是直接百度Anaconda并且下载安装,安装过程中可直接选择自动配置环境变量,在此不再赘述。2.安装Python编辑器,并在其中配置Python编辑器常用的是PyCharm,属于和IDEA一家公司的软件,这个软件对于学生有免费优惠,大学生可以直接去它官网申请,好像是需要一年一申,当然不缺钱的话也可以直接购买。3.安装控制包uiautomator2,和其它辅助包安装完后,想要控制手机,还需要安装…

    2022年8月12日
    7
  • Pytest(11)allure报告「建议收藏」

    Pytest(11)allure报告「建议收藏」前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。mac环境:

    2022年7月31日
    11
  • vue点击复制_js获取复制的内容

    vue点击复制_js获取复制的内容Vue中配合clipboard.js实现点击按钮复制内容

    2022年4月21日
    94
  • TK-MyBatis 分页查询「建议收藏」

    TK-MyBatis 分页查询「建议收藏」记tkMybatis查询出一个 List集合该集合已经做好了一层分页Page封装即查询出的list使用类型判断instanceofPage为true但是,中途不明白这是一个带分页的集合,把查询出的结果集又做了一层封装需要返回的对象类型为GoodsCategoryDTO,代码如下:   //商品集合        List&lt;GoodsCategory…

    2022年6月1日
    201
  • SqlServer中Exists的使用

    SqlServer中Exists的使用1、简介不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询 相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询。带Exists的子查询就是相关子查询 Exists表示存在量词:带有Exists的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”2、表结构选课表:学号StudentNo、课程号CourseNo学生表:学号Stude…

    2022年7月14日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号