精华内容
下载资源
问答
  • 内核移植步骤

    2021-04-23 11:02:42
    内核移植步骤 相比于uboot移植,内核只关心内存条的情况,所以移植相对uboot简单 **第一步:**网上下载相关的内核文件http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/ **第二步:**配置内核移植的必要环境 ...

    内核移植步骤

    相比于uboot移植,内核只关心内存条的情况,所以移植相对uboot简单

    **第一步:**网上下载相关的内核文件http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/

    **第二步:**配置内核移植的必要环境
    (1)需要支持menuconfig(有了这个方便我们后面选择配置)
    只需要dpkg -i 压缩包就可以
    (2)需要支持mkimage(编译image文件时需要)
    将mkimage工具拷贝到/usr/bin

    **第三步:**选择默认配置
    (1)进入解压后的文件夹找到Makefile文件,修改配置

    ARCH            ?= $(SUBARCH)
    将这条配置命令修改为
    ARCH            ?= arm
    
    CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)
    将这条配置命令修改为
    CROSS_COMPILE   ?= arm-linux-
    

    修改原因:第一条是指定(cpu架构),第二天是指定交叉编译器,如果不修改那么我们在执行命令的时候需要输入完整的指令:
    powershell make ARCH=arm CROSS_COMPILE=arm-linux- uImage

    **第四步:**添加新配置
    (1)执行默认配置make exynos_defconfig
    (2)执行make menuconfig
    在这里插入图片描述
    出现的界面就是我们需要选配的界面,例:
    如果我们需要配置网卡驱动,实现NFS服务,我们需要勾选一下选项:

    [*] Networking support  --->
    	Networking options  --->
    		<*> Packet socket
    		<*>Unix domain sockets 
    		[*] TCP/IP networking
    		[*]   IP: kernel level autoconfiguration
    Device Drivers  --->
    	[*] Network device support  --->
    		[*]   Ethernet driver support (NEW)  --->
    			<*>   DM9000 support
    File systems  --->
    	[*] Network File Systems (NEW)  --->
    		<*>   NFS client support
    		[*]     NFS client support for NFS version 3
    		[*]       NFS client support for the NFSv3 ACL protocol extension
    		[*]   Root file system on NFS
    

    选择按键为shift+s

    按照上面的配置修改完毕,NFS显示还是无法正常运行,原因在于我们只是设置了网卡和NFS服务器的配置,并没有告诉板子应该如何加载网卡,所以我们还需要完成修改设备树的操作:
    $ vim arch/arm/boot/dts/exynos4412-fs4412.dts 添加如下内容:(难点)
    选择在该文件中添加的原因是在dts文件夹中有很多的.dts文件都可以生成设备树,需要找到相对应的型号。

    srom-cs1@5000000 {
    		compatible = "simple-bus";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		reg = <0x5000000 0x1000000>;
    		ranges;
    
    		ethernet@5000000 {
    			compatible = "davicom,dm9000";
    			reg = <0x5000000 0x2 0x5000004 0x2>;
    			interrupt-parent = <&gpx0>;
    			interrupts = <6 4>;
    			davicom,no-eeprom;
    			mac-address = [00 0a 2d a6 55 a2];
    		};
    	};
    

    这段配置需要我们自行通过看设计图来完成,部分参数说明:
    reg:为网卡的起始地址
    interrupt-parent:设置为中断管脚
    interrupts:参数为gpx0_6,下降沿触发
    mac-address:为网卡的物理地址

    到这来为止内核移植算是基本完成,最后再进行编译即可: make uImage
    最后编译设备树:make dtbs,再找到和自己板子相关的设备树文件即可

    在这里插入图片描述

    以上的操作系统可以实现网络功能,那么如果我们需要安装其他的驱动,需要安装步骤,先通过make menuconfig选择配置然后再在设备树文件上面加上相应地代码即可。

    问题追加:
    编译最后出现该问题:
    在这里插入图片描述
    解决方法:
    未指定加载地址,所以需要使用以下语句执行:

    LOADADDR=0x40008000 make uImage (LOADDR地址必须未未使用的地址)
    
    展开全文
  • s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤
  • linux内核移植步骤

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

    2016.6.8

    经过一个多星期的内核折磨,今天终于可以写下自己移植内核的一些心得,网上有很多博客论坛都有谈到,但是这些又说的方式有些模糊,这里我综合的几个博客在重新说下内核替换编译的步骤、以及如何更新启动项grub。替换linux的内核一共有两种方式,第一种方式是下载官方kernel提供的源码包,进行编译替换;第二种直接下载内核安装包deb,进行升级替换。

    下面分别从这两种方式进行 一个说明:

    方式一:kernel提供的源码包,进行编译替换

    1、首先做好内核编译前的准备工作,

    主要有两个准备工作,一是在linux kernel官网上下载源码包,二是安装好任意版本的linux Ubuntu 系统并下载相应的编译工具。

    在linux kernel上下载源码包,网址为:https://www.kernel.org/pub/linux/kernel/,选择对应的源码包下载,注意源码包的大小一般是几十兆左右,命名后缀为.tar.bz2,如下图所示:以linux_3.2.1为例子:
    在这里插入图片描述

    下载完成后,进行第二个准备工作,安装任意版本的Ubuntu,安装镜像网址:http://www.ubuntu.org.cn/download ,像装其他任意操作系统一样,安装完成Ubuntu操作系统,然后配置好联网,进行apk_get的下载。以下过程在root权限下进行,安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。

    有关命令:

    $sudo  apt-get install build-essential kernel-package   libncurses5-dev
    

    注意:
    (1)libncurses5-dev是为之后配置内核能运行 make menuconfig程序做准备
    Build-essential为编译工具,kernel-package是编译内核工具

    (2)如果系统显示无法查找到这三个文件,输入#apt-get update更新数据源。
    把刚刚下载的源码包进行拷贝在ubuntu系统中,并解压到/usr/src 目录下,解压可以直接右键解压,或者采用以下命令进行解压:

    $sudo tar Jvfx linux-3.4.88.tar.xz
    
    2、开始配置编译的相关文件及环境

    首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。
    相关命令如下:

    #$ sudo make mrproper
    

    然后将自己原本内核的配置文件拷贝过来成为新内核的配置文件,命令:

    #cp /boot/config-`uname -r` ./.config
    

    这里需要说明的是,拷贝过来是很方便的,相当于直接给新的内核编译提供对应的配置文件,告诉内核哪些文件要编译,哪些不需要编译,但是经过几次的编译修改,这一部分是可以自定义的,利用我们之前下载的工具menuconfig。

    进入内核的源码目录

    #cd /usr/src/linux_3.2.1
    

    执行以下命令:

    #make  menuconfig
    

    注意:这个命令需要在超级用户权限下执行,否则可能会报出一些莫名奇妙的错误。执行这个命令之后了,就可一看到下面的图片了:
    在这里插入图片描述
    这个图里面就可以对配置文件进行一个修改了,如果当初直接拷贝原内核的配置文件,那么此时直接选择倒数第二行load an Alternate Configuration File,然后sava即可。

    如果自己配置则选择上面的任意目录,进行选择哪些文件要编译,哪些不编译,一般需要选择的是设备驱动,选项是Device Drivers,选择完毕后同样保存save即可。

    注意这两种方式都可以,看用户自己的选择。具体的每个选项的内容解析见一下博客:
    http://forum.ubuntu.org.cn/viewtopic.php?t=134404

    3、开始编译新内核

    编译命令:

    #make all -j4
    

    执行以上命令之后就可以编译内核了,
    make all就是将内核以及模块一起编译。后面的参数-j4表示,cpu要开启四个线程来编译内核。一般来说,每个cpu可以开启两个线程来编译内核,我的电脑是有两个cpu,所以开启了4个线程。这样编译真心很快的,以前没有发现这样编译,只有一个线程编译真心够等好长时间的。

    4、编译完成之后,就可以进行内核的安装了

    我们将源代码目录下的arch/x86_64/boot/bzImage复制到/boot/下面,因为我下载的源代码版本为linux-3.2.1,但是需要根据自己的cpu类型,如是x86架构还是amd,或者是32位或64位,在相应的目录下寻找bzImage。
    所以复制的命令为:

    #cp arch/x86_64/boot/bzImage /boot/vmlinuz-3.2.1  
    

    这里需要说明,bzImage必须得有,是编译成功完成的一个生成文件,如果没有此文件,对不起,编译失败,请重新回去编译。vmlinuz-3.2.1 是自己主动命令的,可以自己改,但一般都是这种命令方式。

    5、将源代码目录下的System.map复制到/boot目录下:

    命令:

    #cp /usr/src/linux-3.2.1/System.map System.map-3.2.1
    
    6、.将源代码目录下的.config复制到/boot/目录下:

    命令:

    #cp .config /boot/config-3.2.1
    
    7、安装模块

    命令:

    #make modules_install
    
    8、生成initrd.img文件
    #cd /lib/modules/3.2.1
    #update-initramfs –c –k 3.2.1
    
    9、.切换到/boot/grub/目录下,自动查找新内核,并添加至grub引导
    #update-grub
    
    10、修改开机grub启动时间间隔,命令如下:
    #cd /ect/default
    #sudo nano ./grub
    

    将hidden两行代码注释掉,这样开机启动的grub就会出现,可以由你选择改启动哪个内核版本。

    #GRUB_HIDDEN_TIMEOUT=0 
    #GRUB_HIDDEN_TIMEOUT_QUIET=true
    

    更改完成之后,在重新生成grub.cfg文件,命令和上面一样:

    #update-grub
    
    11、切换至grub.cfg目录

    以文本形式查看,是否更新有新内核的启动项,如果有即可不用修改,如果没有,进行手动修改。

    #cd /boot/grub
    #sudo nano ./grub.cfg
    

    手动修改,按照原来内核的格式进行修改,只用修改新内核的名字而已。

    12、重启电脑,在previous version中选择启动新编译的内核,成功进入系统。

    输入内核版本检测命令:

    命令:#uname -r
    

    就会出现新内核的名称!!!恭喜,替换内核成功!

    方式二:下载内核安装包deb,进行升级替换

    首先必须说明的是,这种方式我尝试了两台电脑,两个不同的内核升级,均为成功,原因不详:
    具体步骤简单如下:

    1.下载deb包

    http://kernel.ubuntu.com/~kernel-ppa/mainline/ 上下载所需升级包。此处下载的是64位的3.5.4版本的3个deb包:

    linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb
    linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
    linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
    
    2.安装deb包

    首先安装架构无关的即带all的headers包

    sudo dpkg -i linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb
    sudo dpkg -i linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
    sudo dpkg -i linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
    

    安装后,/boot目录下会生成新的内核的相关文件,/lib/modules目下也生成了相应模块。

    3.更新启动项grub

    按照上述的步骤9开始,与上面一样。更新完了grub.cfg,然后重新启动,进行新的内核即可
    测试按照这种步骤进行,但是开机进入之后直接紫屏,没有任何现象,原因不明!!!

    展开全文
  • 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镜像。

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

    2018-08-03 15:20:42
    Vi Makefile 修改arch, ... 移植linux内核, 首先需要一个基本的配置(哪些模块有, 哪些功能有) 怎么得到基本配置 : arch/arm/configs 目录下有很多arm 处理器的默认配置 Make exynos_defconfig 等同于 ...
    1. Vi Makefile     修改arch,   修改cross_compile = arm-none-linux-gnueabi-
    2. 移植linux内核, 首先需要一个基本的配置(哪些模块有, 哪些功能有)
    3. 怎么得到基本配置 :    arch/arm/configs   目录下有很多arm 处理器的默认配置
    4. Make  exynos_defconfig   等同于                                              cp  ./arch/arm/config/exynos_defconfig ./.config

        5.Make menuconfig             对内核进行裁剪或修改配置,

        6.裁剪结束,   make  uImage  生成内核镜像 (uImage  就是针对uboot 的内核镜像, 比 zImage 多了64 个字节头)

        7.Make  dtbs  生成设备树文件

        8.Make   modules

    展开全文
  • 这个pdf中有烧写开发版的详细步骤,包括window 和linux 操作系统
  • 详细介绍了uboot内核移植的过程、包括 内核 、led、 LCD、 网卡 、文件系统、Qt移植的操作步骤
  • 本文以将linux移植到ARM920T内核的s3c2410处理器芯片为例,介绍了嵌入式linux内核裁剪以及移植的过程,并对移植中的关键技术和重要步骤给出了详细的说明。
  • linux内核移植

    2013-12-16 17:57:26
    linux内核移植实验关键步骤,所有linux移植都可以参考。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,940
精华内容 10,776
关键字:

内核移植步骤