1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18...
-
date post
19-Dec-2015 -
Category
Documents
-
view
310 -
download
3
Transcript of 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18...
1
建立 ArmLinux 仿真开发环境
X-Men 小组
2
内 容
• 1. Armlinux-2.4.18 仿真环境的建立
• 2. Armlinux-2.6.0 内核配置的问题
3
Armlinux-2.4.18
• 交叉编译环境• 编译 ARM Linux 内核• 制作根文件系统• 装载 ARM Linux
4
相关软件:
• ubuntu 7.10 • skyeye_1_2_3• cross-2.95.3• busybox-1.00
5
• 系统准备: 安装 UBUNTU 7.10
设置系统的更新源 更新源就是提供 Ubuntu 相关软件下载的服务器地址 a 先把原有的更新源备份一下 :
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
b 输入用户密码后,然后编辑新的更新源 sudo gedit /etc/apt/sources.list
6
7
3. 保存编辑好的文件,执行以下命令更新 .
sudo apt-get update
sudo apt-get dist-upgrade
4. 更新完后 , 重新启动系统 .
8
5. 安装本机编译工具
在终端上,输入 sudo apt-get install build-essential
将安装本机所需的编译工具和相关支持库。
如此步没做,后面进行一些编译时会有很多的错误。
9
• 安装交叉编译环境 1. 先下载 cross-2.95.3.tar.bz2
2. 解压缩,产生 2.95.3 这个目录, 在 /usr/local 目录下新建一个目录 arm ,将 2.9
5.3 目录及 其内容拷贝到此目录下
如果是用 cross-3.2 则可以在根目录 / 下直接解压缩就可以了
10
3. 添加环境变量 sudo gedit ~/.bashrc
export PATH=$PATH:/usr/local/arm/bin
注意:此步后要重新登录系统更改才有效
4. 检查是否建立好交叉编译环境 对 arm-linux- 使用 tab 键功能 查看 arm-linux-gcc 的版本 用 arm-linux-gcc 编译目标版的可执行程序
11
12
• 编译 ARM Linux 内核
1. 准备内核
2. 配置内核
3. 编译内核
13
a 准备内核
1.下载标准 Linux 的内核源码和 ARMLinux 的补丁 linux-2.4.18.tar.bz2 patch-2.4.18-rmk7.bz2
2. 解压缩内核,并打上 ARMLinux 的补丁 patch -p1<../patch-2.4.18-rmk7.bz2
错误:找不到 patch 命令原因: Ubuntu 默认没有安装 patch 工具解决:安装 patch sudo apt-get install patch
14
b 配置内核 这个环节是最麻烦的,进展最慢的地方。 1 :容易出错: 2 :错误不好解决。 如果在此之前的步骤能成功完成,在这个环节会少很
多的错误,节省很多时间。所以如果有很多很奇怪的错误,最好不要盲目,先检查之前的编译工具,支持库,环境变量等是否设置正确。
当然之前能顺利完成,在这个环节还是有不少错误;对内核的配置还是有很多不清楚的地方。
关于内核编译配置选项简介可以参照下面的网址: http://lamp.linux.gov.cn/Linux/kernel_options.html
15
配置内核的方式三种方式:• make config 命令行式的一般不推荐
• make xconfig
可用鼠标点击选择 • make menuconfig
菜单式,用键盘控制
16
错误及解决方法• 错误 1 :• 如执行“ make xconfig” 指令 , 进入内核设
置时,系统会报错说没有 wish 命令。• 解决方法:• 根据提示进行安装 wish 即可。 Ubuntu 默
认是没有安装这个命令的。
17
• 错误 2 :• 若运行 make menuconfig 会提示 ncurses
找不到,这是因为 menuconfig 用到了ncurses 库 . 系统默认没有安装 .
• 解决办法如下:• sudo apt-get install libncurses5-dev 。
18
错误 3 :配置完后编译内核,开始编译。编译中报错:
这个错误很常见。
19
解决方法: 这个原因是你在配置内核的时候选了 vga 的支持,去掉 c
onsole drivers 下的 vga text console 选项后重新编译
20
• 错误 4:
21
解决方法: 去掉 character device 中的 virtual terminal
选项。
22
制作根文件系统这个环节也是很比较困难的地方,出错很多
1) 安装 busybox 工具包
2) 创建文件系统的映象文件
3) 配置根文件系统
23
busybox
• 错误 1 :
24
解决办法: make menuconfig , 然后选择 Networking Utilities.
将 route 项不选。
25
• 错误 2 :
26
如果出现找不到内核版本号的编译错误,可以有两种方法解决:
(1) 把你的内核源码中的 version.h 文件拷贝到交叉编译器的包含文件的 linux 目录下;
(2) 该方法来源于论坛上面的一位朋友,做法为删掉 #include <linux/version.h>换成 #define UTS_RELEASE "2.4.18-rmk7" #define LINUX_VERSION_CODE 132114 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) <<
8) + (c))( 该方法我试验成功 )
27
28
• 老师 PPT 关于 busybox 的介绍和编译安装虽说只有两页,自己当时也感觉不是很麻烦。可是自己真正做的时候确遇到了很多问题。
29
创建文件系统的映象文件①在 /mnt 下创建 img 目录 , 然后进入根目录
执行如下指令创建一个空的映象文件 :$dd if=/dev/zero of=initrd bs=1024k count=1$mke2fs -F -m0 initrd②使用如下指令加载创建的文件系统 , 并复
制文件系统中必要的文件 :$mount -t ext2 -o loop initrd /mnt/img$cp -Rd /tmp/target/* /mnt/img
30
创建设备文件建立设备文件 , 一个简单的方法是复制主
机 /dev/ 目录下一些必要的设备文件到 /mnt/img/dev/ 目录下 .基本的设备文件有 :/dev/console /dev/fd0/ dev/null /dev/arm0 /dev/tty /dev/tty0
在复制的过程中 , 要注意使用 dp 参数以保证文件属性不变 .
31
32
• sudo cp -dp /dev/tty /mnt/img/dev
33
• 解决方法:
• 增加映象文件的大小,重新建立 5M 的映象文件
• dd if=/dev/zero of=initrd bs=5M count=1
34
ARM Linux 移植到 Skyeye 上运行
1. 安装 skyeye
在终端中输入 sudo apt-get install skyeye 命令, skyeye1.2.3 就安装好了
2. 将生成的内核映像 vmlinux 和根文件系统 initrd 拷贝到一个文件下
3. 编写 skyeye.conf 文件
35
36
37
38
Armlinux-2.6.0
• 交叉编译 ARM Linux 内核
39
• 错误一:在输入“ make xconfig” 后,如果出现很多错误,原因是系统一些编译相关的软件包没有安装。
40
• 在安装了相关软件后,可用看到 gcc 的版本是 4.1.3
41
错误二:
出错原因:系统里的 gcc 是 4.1, 它对语法要求非常严格,导致该错误。
42
解决办法:或者去注释掉出错的那一行,或将该行 static 修饰符去掉。
43
错误三:
出错原因: make xconfig 运行需要相关的依赖包,出现此错误,说明此步之前没有安装 QT 开发包
44
解决办法:
安装 QT 开发包,在新立得软件开发包管理器内安装右图所示的软件包。
45
错误四:
我认为是: 系统里的 gcc 是 4.1, 它对语法要求非常严格,导致该错误
46
做到这步终于可用出 make
xconfig
的界面了
47
• 编译内核• 2.6 版可以直接用 make 命令就可用了,不
需先 make dep 后再执行 make 命令。
• 注意编译器的版本,要是 cross-3.3 以上的版本。
48
谢谢
• 陈坤,刘江,衷心感谢你们的帮助!