arm linux 内核修改,【内核配置】一、从标准linux-2.6.22.6系统到ARM平台JZ2440开发板的linux系统的修改攻略...

主    机:VMWare--Ubuntu-16.04.2-x64-100ask

开发板:JZ2440--256M NandFlash,   2M NorFlash,   64M SDRAM,   LCD-4.3寸;

bootlorder:u-boot1.16,       Kernel:2.6.22.6;

编译器:arm-linux-gcc-3.4.5

工作目的:裁剪、打补丁、配置、修改,得到一个包含uboot、内核、根文件系统的可在JZ2440开发板上运行的linux系统;

一、u-boot配置/使用

1. 解压u-boot-1.1.6.tar.bz2;得到u-boot-1.1.6文件夹;

命令:tar xjf u-boot-1.1.6.tar.bz2

2. 打补丁u-boot-1.1.6_jz2440.path到u-boot-1.1.6;

命令:cd u-boot-1.1.6

命令:patch -p1 < ../u-boot-1.1.6_jz2440.patch

3. 配置

命令:make 100ask24x0_config //配置

命令:make //编译得到uboot.bin;

*4.设置环境变量--看门狗倒数计时:

命令:set bootdelay 10 //由3s改为10s;

命令:save //保存环境变量到flash空间;Saving Environment to NAND...

命令:reset //重启,观察看门狗倒数计时的改变现象;

二、内核配置/启动

1. 解压linux-2.6.22.6.tar.bz2:得到linux-2.6.22.6

命令:tar xjf linux-2.6.22.6.tar.bz2

2. 打补丁linux-2.6.22.6_jz2440.patch:

命令:cd linux-2.6.22.6

命令:patch -p1 < ../linux-2.6.22.6_jz2440.patch

3. 配置,直接使用百问网提供的config_ok配置文件,省去大量配置工作;

1)命令:make s3c2410_defconfig

2)命令:cp config_ok .config

4. 配置菜单

命令:make menuconfig

设置菜单,结束后退出菜单设置界面;

(此命令一般会造成编译错误,原因是因为Makefile文件和Ubuntu的make工具最新版本不完全匹配,可查看本人博客园的博客解决)

5. 编译并生成uImage;

命令:make uImage

6. 加载内核

命令:k [k]Download linux kernel uImage.

命令:通过DNW传输内核到单板。

7. 启动内核

命令:b [b]Boot the system.

观察串口控制台的打印信息,由于没有文件系统,只能启动到一半。

8. 重启电源。

三、根文件系统

1. 加载根文件系统映像

命令:k [k]Download linux kernel uImage.

命令:通过DNW传输内核到单板。

2. 启动内核和系统

命令:b [b]Boot the system.

观察串口控制台的打印信息;

3. 配置并编译busybox:

a. 命令:上传busybox-1.7.0tar.bz2到Ubuntu服务器并解压切入路径:busybox-1.7.0;

b. 查看INSTALL文件,了解Busybox的建立方法;

c. 配置busybox:

命令:make menuconfig

操作:按照《嵌入式完全开发手册》_17.2_busybox设置

d. 编译busybox:

1)修改busybox根目录的Makefile, 使用交叉编译器:

176 CROSS_COMPILE ?=

改为:

176 CROSS_COMPILE ?= arm-linux-

2)编译Busybox:

命令:make

e. 安装Busybox:

命令:mkdir -p /work/nfs_root/fs_first

命令:make CONFIG_PREFIX=/work/nfs_root/fs_first install

注:切勿直接命令:make install; 否则,将安装到默认PC机文件系统,破坏系统!

4. 构建最小根文件系统(五项内容)

a. 仿照PC机的设备文件,创建两个设备文件:

控制台(终端)/dev/console 无ID标准输入/输出/报错定位-/dev/null

命令:mkdir dev

命令:cd dev/

命令:sudo mknod console c 5 1

命令:sudo mknod null c 3 1

b. init->busybox, 第三节已经完成了;

c. /etc/inittab ;配置文件

命令: mkdir etc

命令: ls

bin dev etc linuxrc sbin usr

命令:vi etc/inittab

console::askfirst:-/bin/sh

命令: cat etc/inittab

console::askfirst:-/bin/sh

d. 配置文件指定的应用程序,最小根文件系统暂时不需要;

e. C库;

1)创建路径:/work/nfs_root/fs_first/lib

命令:/work/nfs_root/fs_first$ mkdir -p /work/nfs_root/fs_first/lib

2)复制PC机Linux系统的动态库到/work/nfs_root/fs_first/lib:

命令:cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

命令:cp *.so* /work/nfs_root/fs_first/lib/ -d

如此,即创建好了最小根文件系统。

5. 烧写最小根文件系统到开发板

5.1 把最小根文件系统制作一个映像文件fs_first.yaffs2;

a. 生成制作yaffs2映像文件的工具

/workbook/jz2440/system$ tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2

/workbook/jz2440/system$ cd Development_util_ok/

/workbook/jz2440/system$ cd Development_util_ok/yaffs2/utils

/workbook/jz2440/system/Development_util_ok/yaffs2/utils$ make

。。。mkyaffs2image 。。。

.../utils$ sudo cp mkyaffs2image /usr/local/bin/

.../utils$ sudo chmod +x /usr/local/bin/mkyaffs2image

b. 制作yaffs2映像文件

.../utils$ cd /work/nfs_root/

/work/nfs_root$ mkyaffs2image fs_first fs_first.yaffs2

(...文件生成过程的打印...)

/work/nfs_root$ ls

... fs_first.yaffs2 ... //此即yaffs2映像文件;

5.2 回传并烧写最小根文件系统的映像文件到开发板;

5.3 启动系统;

6. 结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值