精华内容
下载资源
问答
  • LINUX为什么要进行内核移植 内核移植的作用,不移植能用么? LZ的问题应该是为什么要重新编译内核吧。既然你已经可以跑了,证明你现在用的内核已经移植到你用的硬件上,自然你也不需要做什么移植。...

     

    LINUX为什么要进行内核移植 内核移植的作用,不移植能用么?
     
    LZ的问题应该是为什么要重新编译内核吧。既然你已经可以跑了,证明你现在用的内核已经移植到你用的硬件上,自然你也不需要做什么移植。
    通常重新编译内核是为了按照自己的需要,简化或者增加某些模块的。例如你现在的硬件不需要网络通讯,就可以在重新编译时把网络模块去掉,这样编译出来的内核就会比较小。

    所谓移植,是指要在一个全新研发的硬件上跑Linux,对内核代码所做的修改。
     

    其他回答

    嗯,你说的是不同架构不同环境的情况下Linux内核移植吧?主要是为了更好的适应硬件环境。

    转载于:https://www.cnblogs.com/lvdongjie/p/6825983.html

    展开全文
  • Linux内核移植

    2020-02-18 10:45:35
    文章基于mini2440开发板和linux-3.6.9来介绍Linux内核移植过程。交叉编译器为arm-linux-gcc-4.4.3。 自Linux2.6.31开始,Linux内核已经开始官方支持了Mini2440,所以在这个版本只需要修改一些关键的配置就可以成功...

    文章基于mini2440开发板和linux-3.6.9来介绍Linux内核移植过程。交叉编译器为 arm-linux-gcc-4.4.3。

    自Linux2.6.31开始,Linux内核已经开始官方支持了Mini2440,所以在这个版本只需要修改一些关键的配置就可以成功移植,不需向Linux2.6.31之前的版本一样构造mini2440开发板相关的文件。

     

    1.Linux内核下载

     

    linux-3.6.9内核下载地址:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.6.9.tar.bz2 ,也可以到linux网站 http://www.kernel.org/下载其他版本内核。

     

     

    2. 解压linux内核

     

    2.1.把下载好的linux-3.6.9内核拷贝到Windows下的共享目录,再拷贝到linux(Ubuntu)的一个目录下。

    2.2使用命令tar  xjvf linux-3.6.9.tar.bz2 解压内核

    解压成功后,在当前目录下出现一个linux-3.6.9目录(如下图)

     

    3. 移植过程

     

    3.1.修改顶层Makefile,指定编译器

    进入linux-3.6.9目录

    sudo vim Makefile

    把ARCH ?= $(SUBARCH)和CROSS_COMPILE?= $(CONFIG_CROSS_COMPILE:"%"=%)分别修改为ARCH ?= arm  和CROSS_COMPILE ?= arm-linux-

    640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1uploading.4e448015.gif转存失败重新上传取消

    保存完之后,退出,使用默认配置make mini2440_defconfig一下。

    3.2.修改MTD分区表

    修改MTD分区表要跟u-boot中MTD分区表一致,否则会启动不了内核。

     vim  arch/arm/mach-s3c24xx/mach-mini2440.c,修改如下图

     

    3.3.支持LCD驱动

    把文档目录下的mini2440fb.c放到linux的共享目录下,再拷贝到drivers/video/下

    cp /mnt/hgfs/Share/MINI2440/ mini2440fb.c  drivers/video/

    修改drivers/video目录下的Makefile

    vim drivers/video/Makefile

     

    3.4.移植yaffs2文件系统

    所谓移植移植 yaffs2 文件系统实际上就是向linux 内核添加 yaffs2 文件系统。

    3.4.1.下载yaffs2文件系统

    下载yaffs2文件系统的链接:

    http://www.aleph1.co.uk/gitweb?p=yaffs2.git;a=shortlog

    把下载好的yaffs2文件系统拷贝到共享目录,再拷贝到linux的一个目录下

    3.4.2.解压yaffs2文件系统

    tar -xzvf yaffs2-3439fa4.tar.gz

    3.4.3.添加yaffs2源文件到linux内核(给linux内核打补丁)

    cd yaffs2-3439fa4/

    ./patch-ker.sh c m /home/sun/work/linux/linux-3.6.9/

    打完补丁,回到linux内核目录

    cd /home/sun/work/linux/linux-3.6.9/

    3.4.3.配置内核

    make menuconfig

    注意:此版本的yaffs2文件系统在linux-4.8.0以下版本会出现挂载不了nand flash上的根文件系统问题。具体可以查看https://blog.csdn.net/Blazar/article/details/79247464中文章介绍。做如下修改,就可以解决这个问题。

    解决方法:

    1.修改fs/yaffs2/yaffs_vfs.c,搜索yaffs_getxattr,做如下修改(如下图)

    2.修改fs/yaffs2/ yaffs_guts.c,搜索yaffs_get_obj_name函数,做如下修改(如下图)

     

    3.5.裁剪内核

    执行make menuconfig ,出现如下图的错误

    解决方法:

    sudo apt-get install ncurses-dev

    安装ncurses-dev之后,重新make menuconfig,就可以看到这样的界面(如下图):

    现在就可以通过界面来裁剪内核,具体的操作如下:

    a.去掉不需要支持的单板

    b.裁剪对文件系统的支持

    c.裁剪对驱动的支持

     

    4.编译下载

     

    4.1.编译

    make uImage

    执行make uImage编译内核时,出现了一个错误(如下图)

    上图出现错误的原因是:由于编译内核生成uImage的时候,找不到 mkimage这个命令。

    解决错误的方法(有两种,选其中一种就可以):

    1.把uboot源码编译后把tools目录下的mkimage文件拷贝到系统的可执行命令文件夹内也就是 cp u-boot/u-boot-2016.07/tools/mkimage   /usr/bin(注意:mkimage是编译uboot之后生成的,并不是mkimage.c之类的文件)

     

    2.安装Ubuntu提供的工具包,这种方法比较便捷,执行命令sudo apt-get install u-boot-tools

    安装u-boot-tools工具之后,重新make uImage,编译成功(如下图)

     

    4.2.下载

    打开tftpboot工具把uImage-3.6.9下载到板子

    tftp 32000000 uImage-3.6.9 //把uImage-3.6.9文件下载到内存0x32000000地址

    擦除kernel分区

    nand erase.part kernel

    烧写uImage-3.6.9文件

    nand write 0x32000000 0x80000 0x 23d7e0(0x32000000:存放下载文件的内存地址,0x80000:要烧写的起始地址,0x 23d7e0:文件大小)

    重启开发板,linux系统就可以跑起来了,屏幕上,但由于nandflash中缺少根文件系统,linux加载不了会出错(如下图),后续会有一篇文章来介绍怎么样移植根文件系统。

    展开全文
  • linux内核移植与编译

    2018-12-25 16:48:22
    在了解了内核及其相关知识之后,就要着手内核移植的实验了。 使用make menuconfig出现问题请移步make: *** 没有规则可以创建目标“menuconfig”。 停止。   Linux内核移植与编译 1.linux内核的下载 实验开始...

    在了解了内核及其相关知识之后,就要着手内核移植的实验了。

    使用make menuconfig出现问题请移步make: *** 没有规则可以创建目标“menuconfig”。 停止。

     

    Linux内核移植与编译

    1.linux内核的下载

    实验开始之前,你需要自行下载linux内核,因为最后要移植都开发板上,因此需要下载相应的内核,下载链接如下:

    https://pan.baidu.com/s/1epiuTQm9JoziuFQ0DVpQ_w

    2.linux内核的解压

    下载完毕后,将文件利用vmware的共享文件夹传输到Ubuntu环境下,进入共享文件夹。

    终端输入:cp linux-3.0.15.tar.gz /nfsroot/kernel,将内核文件拷贝到指定目录。进入该目录,对内核文件进行解压。

    终端输入:tar xvzf linux-3.0.15.tar.gz,将内核文件解压到当前文件夹。

    解压成功后,当前文件夹下会生成linux-3.0.15目录。

    3.如何添加新的内核驱动

    首先进入内核源码目录,终端输入:cd linux-3.0.15

    接着进入drivers/char 目录,终端输入:cd drivers/char

    在char目录下,我们利用vim编辑器编写一个helloworld.c文件,文件内容如下:

    终端输入:vim helloworld.c

    #include <linux/init.h>
    #include <linux/module.h>
    MODULE_LICENSE("Dual BSD/GPL");
    
    static int hello_init(void)
    {
            printk(KERN_ALERT"Hello, world\n");
            return 0;
    }
    static void hello_exit(void)
    {
            printk(KERN_ALERT"Goodbye, world\n");
    }
    
    module_init(hello_init);
    module_exit(hello_exit);

     

    进入内核源码目录修改drivers/char目录下的Kconfig文件,按照Kconfig的语法添加helloworld的程序菜单支持。

    终端输入:cd /nfsroot/kernel/linux-3.0.15

    vim drivers/char/Kconfig

    在Kconfig文件中的source“driver/char/hw_random/Kconfig”下面添加如下内容(大约在264行)

    进入末行模式,输入:g/source,找到相应的行,末行模式输入 :行数  即可将光标迅速跳转至相应行。

    添加内容如下:

    config HELLO_MODULE
            bool "Hello World Test" 
            depends on CPU_EXYNOS4412 
            help 
              This is a demo to test kernel experiment On UP-CUP44.

     

    注意:config HELLO_MODULE段要与前后段有换行隔开,且bool行前要有tab制表位,注意格式。

    接下来对drivers/char目录下的Makefile文件进行修改,按照内核中Makefile的语法格式添加helloworld程序的编译支持。

    终端输入:vim drivers/char/Makefile

    当前处于末行模式,输入 :g/hw_random

    找到obj-$(CONFIG_HW_RANDOM) += hw_random/,在其下面添加如下内容:

    obj-$(CONFIG_HELLO_MODULE) += helloworld.o

     

    接下来运行make menuconfig 配置内核对helloworld程序的支持。

    终端输入:make menuconfig

    进入Device Drivers --->,如下图所示:

    接着进入Character devices --->,如下图所示:

    但是经过寻找并没有发现hello菜单。

    经过尝试,决定改用新建目录的方式将hello程序写进内核。

    (参考网址:https://blog.csdn.net/u013359794/article/details/46501923)

    在drivers/char下新建hello目录,目录中包含helloworld.c和Makefile以及Kconfig文件。

    其中helloworld.c中的内容与上面的相同,Makefile的内容如下:

        obj-$(CONFIG_HELLO) += helloworld.o

    Kconfig的内容如下:

        config HELLO_MOUDLE
        bool "Hello World Test"
        help
           Test for adding driver to menuconfig.

    接下来对上一级目录的Makefile和Kconfig文件进行修改:

    进入内核源码目录linux-3.0.15,终端输入:vim drivers/char/Kconfig

    在文件末endmenu之前添加:
    source "drivers/char/hello/Kconfig"

    终端输入:vim drivers/char/Makefile

    在文件末尾处添加:

    obj-$(CONFIG_HELLO_MOUDLE) += hello/

     

    完成修改后,在源码目录输入make menuconfig,同样进入Device Drivers --->、Character devices --->发现新目录。

    按空格键将尖括号中选为*,之后保存退出,选择yes。

    之后执行make命令,将内核重新编译。编译成功后,会在内核源码目录的arch/arm/boot

    目录下生成内核压缩文件zImage。在完成之后,按照配套文档将新生成的内核重新烧写到开发板,就能在串口终端显示内核在启动过程中打印的相应信息。

     

    如果在make执行过程中出现:elf_i386或elf_x86_64:没有那个文件或目录

    原因是gcc 4.6不再支持linker-style架构。

    64位系统解决方法:

    确保当前路径是在内核目录中,然后执行命令:vim arch/x86/vdso/Makefile,在Makefile中搜索elf_x86_64,然后把”-m elf_x86_64” 替换为 “-m64“;

    在Makefile中搜索elf_i386,然后把”-m elf_i386” 替换为 “-m32“,保存退出,问题解决了。接着继续编译,就可以了。

    32位系统解决方法:

    在Makefile中搜索elf_i386,然后把”-m elf_i386” 替换为 “-m32“,保存退出,问题解决了。接着继续编译,就可以了。

     

    如果make过程中出现               PATH_MAX未声明(在此函数内第一次使用)

    发现PATH_MAX在limits.h中定义,在/scripts/mod/sumversion.c中添加#include <limits.h>即可。

     

    展开全文
  • Linux内核移植步骤

    千次阅读 2017-07-01 17:18:22
    Linux内核移植是嵌入式开发只至关重要的一步,不同的嵌入式应用需要不同的嵌入式平台。内核的可裁剪行也可以在内核移植中体现出来,对于特定的硬件环境,我们可以只保留和硬件相关的内核代码,从而达到缩小内核代码...

    Linux内核移植是嵌入式开发只至关重要的一步,不同的嵌入式应用需要不同的嵌入式平台。内核的可裁剪行也可以在内核移植中体现出来,对于特定的硬件环境,我们可以只保留和硬件相关的内核代码,从而达到缩小内核代码体积,减少代码所占存储空间。

    下面我们一步一步了解linux内核移植方法。

    1、修改硬件平台的支持

    我们可能用到arm,也可能用到power pc以及i386,所以针对不同平台要修改内核对该平台的支持。

    arm为例(以下都以arm为例,linux-3.5版本),论述修改方法:

    修改内核根目录下makefile文件

    ARCH ?= $(SUBARCH)

    CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

    把上面两行修改为:

    ARCH ?= arm

    CROSS_COMPILE ?= arm-linux

    2、修改平台时钟

    打开arch/arm/mach-s3c24xx/mach-smdk2440.c文件

    s3c24xx_init_clocks(16934400);

    修改为:

    s3c24xx_init_clocks(12000000);//根据开发板外接晶振大小设置

    3、修改机器码

    打开arch/arm/tools/mach-types文件

    s3c2440 ARCH_S3C2440 S3C2440 362

    修改为自己的机器码。 //根据开发板具体情况设置

     

    以上三个方面是最基本的,当然还有对nandlcd、网卡芯片等等的支持。

    下面就是配置内核了,配置内核有三种方式:

    1、运行命令make configmake oldconfig

    2、运行命令make menuconfig

    3、运行命令make xconfig

    1是命令行的形式,2是基于文本的图形界面,3是需要x window system支持,前两种不支持鼠标,第三种支持鼠标。

    等到所有配置已经完成,开始编译内核,内核编译需要很长时间。

    运行命令:make zImage

    完成后,会在arch/arm/boot生成zImage镜像。

    展开全文
  • uboot和Linux内核移植

    千次阅读 2020-01-02 19:11:29
    这篇文章是一个读者昨晚发给我的,文章很长,里面的细节也比较多,但是微信公众号只能发 50000 字的文章,如果想阅读全文。请发送「uboot和Linux内核移植」到公众号后台获取下载...
  • Linux内核移植与启动

    千次阅读 2016-07-21 20:42:14
    Linux内核移植与启动 交叉编译器:buildroot-2012.08  Bootloader:U-boot-2010.09 Target borad:FL2440 1. Linux内核基础知识 在动手进行linux内核移植之前,我们有必要对linux内核进行一定的了解。   Linux...
  • 首先下载内核,先看一下比较新4.x的能不能用 我下载了一个4.1.40版本的 打开顶层Makefile,搜索找到 CROSS_COMPILE 按上图所示,注释掉SUBARCH,修改ARCH和CROSS_COMPILE 搜索找到s5pv210_defconfig,然后...
  • 本人的开发板是友善之臂的smart210,学习内核移植已经有些时间了,期间的过程可谓历经千辛万苦,想必学习嵌入式的朋友们都有体会,最近想把学习内核移植的过程做一下笔记,完整的记录一下内核移植的过程,一方面希望...
  • Linux设备驱动移植(四)——Linux内核移植
  • S5pv210内核移植

    千次阅读 2014-03-19 07:36:40
    由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。 内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们...
  • 实验手册修正版下载地址:FS4412系统移植实验手册-内核移植 实验中使用的内核版本是3.14.0,因为我的上传限制是70M,所以内核没办法上传。这里提供官方地址自行下载吧:https://www.kernel.org/ 在实验中还有
  • linux高通内核移植工具十教程

    千次阅读 2019-03-25 17:44:14
    linux高通内核移植工具十教程 相信很多人移植高通内核都遇到很多问题,如移植后的内核开机直接进入fastboot、recovery和卡一屏、无限一屏等等,本人也是这些问题,便去找了大神学习。下面我为大家说下教程(超级...
  • 摘要:《ARM嵌入式Linux系统开发详解》第20章Linux内核移植,本章的重点是Linux内核移植,需要考虑硬件平台的差异,涉及较多知识。本节为大家介绍Linux内核移植要点。 第20章 Linux内核移植 软件移植的概念简单...
  • android内核移植

    2009-07-24 14:26:10
    现在android手机的开发已是一个大话题,其中的关键技术就在于android内核移植,在这里具体描述android内核移植步骤
  • Linux开发七_linux内核移植

    千次阅读 2016-09-28 09:54:27
    Linux是一套免费使用和自由传播的操作系统,吸收了来自全世界无数程序员的精华,不断完善壮大。Linux内核高度可移植,其可以运行在各种硬件设备中,如路由器、...笔者此处就s3c2416的Linux内核移植作一个简单的介绍。
  • linux内核移植详解

    千次阅读 2010-03-10 13:15:00
    linux内核移植详解下载地址:
  • 在前面的移植过程中,内核编译出来有 2414KB,而 Nand Flash 的 mtd 分区中指定了 kernel 分区为 2M=2048KB,所以需要对内核进行裁剪,去除不必要的内容。 2. 内核裁剪方法 内核裁剪的方法非常简单,打开编译配置: ...
  • linux内核移植步骤

    万次阅读 多人点赞 2018-12-11 13:17:45
    经过一个多星期的内核折磨,今天终于可以写下自己移植内核的一些心得,网上有很多博客论坛都有谈到,但是这些又说的方式有些模糊,这里我综合的几个博客在重新说下内核替换编译的步骤、以及如何更新启动项grub。...
  • Linux内核移植 part3:usb host驱动

    千次阅读 2017-03-06 14:53:17
    继续Linux内核移植系列,今天介绍如何移植Exynos4412 usb驱动,采用的平台依旧是itop Exynos4412精英板。协议的知识就不介绍了,直接来移植一个可以使用的usb host驱动。一 硬件配置1.1 外部管脚首先usb host
  • ARM9的linux内核移植

    千次阅读 2014-04-07 20:01:34
    写此文时,已是深夜。下午3点钟奋斗到11点。...参考网上的资料将linux-2.6.30.5的内核移植到了mini2440开发板,现把移植过程整理下来备忘。 电脑主机系统:Ubuntu 9.04 mini2440开发板bootloader:s
  • 内核移植就是根据你自己选择的硬件平台来重新编译内核支持对应的硬件,使之可以在该硬件平台上运行,如果缺少相应的硬件驱动程序或其他内核模块,可以自己进行相应的开发加入到内核中一起编译最终实现对...
  • [Exynos4412][Tiny4412]内核移植

    千次阅读 2016-08-29 19:50:34
    参考资料 [1]基于tiny4412的Linux内核移植(支持device tree)(一) [2]基于tiny4412的Linux内核移植(支持device tree)(二) [3]基于tiny4412的Linux内核移植(支持device tree)(三)
  • 1.3 Linux内核移植 1.3.1 移植内核和根文件系统准备工作 移植内核前,保证你已经装上了Linux系统,建立好了交叉编译环境,我用的是虚拟机,装的Redhat9.0系统,交叉编译工具用的是友善之臂的arm-linux-gcc-4.3.2。...
  • 嵌入式Linux内核移植

    千次阅读 2009-05-16 12:48:00
    嵌入式Linux内核移植姓名:成 炼 学号:081141实验目的l 了解Linux内核源代码的目录结构及各目录的相关内容l 了解Linux内核各配置选项内容和作用l 掌握Linux内核配置文件的作用l 掌握Linux内核的编译过程l ...
  • tiny6410内核移植

    千次阅读 2012-10-18 20:36:14
    一、开发环境 宿主机:Fedora9.0 ...二、内核移植 1.下载源码 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2 linux-2.6.38 2.解压 (进入根目录下的/opt目录,解压源码)    tar xvfj
  • mini2440的 linux内核移植

    千次阅读 2012-03-18 09:56:38
    mini2440的Linux内核移植 参考网上的资料将linux-2.6.30.5的内核移植到了mini2440开发板,现把移植过程整理下来备忘。 电脑主机系统:Ubuntu 9.04 mini2440开发板bootloader:supervivi 交叉编译器...
  • 内核移植成功,其实我都不知道为什么成功,胡乱鼓捣鼓捣就出来了。 最重要的一点:移植完内核以后一定先要复位一下所以要先把bootcmd环境变量给删掉,再添加环境变量setenv bootargs 'noinitrd root=/dev/mtdblock2...
  • tq210 内核移植和根文件系统

    千次阅读 2014-02-20 15:21:22
    由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。 内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们...
  • 20.1 Linux内核移植要点

    2009-12-18 08:39:00
    20.1 Linux内核移植要点Linux的代码完全开放以及其良好的结构设计非常适于嵌入式系统。移植Linux系统包括内核、程序库和应用程序,其中最主要的就是内核移植。由于Linux内核的开放性,出现了许多针对嵌入式硬件系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,595
精华内容 43,038
关键字:

内核移植