1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18...

48
1 建建 ArmLinux 建建建建建建 X-Men 建建
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    310
  • download

    3

Transcript of 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18...

Page 1: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

1

建立 ArmLinux 仿真开发环境

X-Men 小组

Page 2: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

2

内 容

• 1. Armlinux-2.4.18 仿真环境的建立

• 2. Armlinux-2.6.0 内核配置的问题

Page 3: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

3

Armlinux-2.4.18

• 交叉编译环境• 编译 ARM Linux 内核• 制作根文件系统• 装载 ARM Linux

Page 4: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

4

相关软件:

• ubuntu 7.10 • skyeye_1_2_3• cross-2.95.3• busybox-1.00

Page 5: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

5

• 系统准备: 安装 UBUNTU 7.10

设置系统的更新源 更新源就是提供 Ubuntu 相关软件下载的服务器地址 a 先把原有的更新源备份一下 :

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

b 输入用户密码后,然后编辑新的更新源 sudo gedit /etc/apt/sources.list

Page 6: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

6

Page 7: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

7

3. 保存编辑好的文件,执行以下命令更新 .

sudo apt-get update

sudo apt-get dist-upgrade

4. 更新完后 , 重新启动系统 .

Page 8: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

8

5. 安装本机编译工具

在终端上,输入 sudo apt-get install build-essential

将安装本机所需的编译工具和相关支持库。

如此步没做,后面进行一些编译时会有很多的错误。

Page 9: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

9

• 安装交叉编译环境 1. 先下载 cross-2.95.3.tar.bz2

2. 解压缩,产生 2.95.3 这个目录, 在 /usr/local 目录下新建一个目录 arm ,将 2.9

5.3 目录及 其内容拷贝到此目录下

如果是用 cross-3.2 则可以在根目录 / 下直接解压缩就可以了

Page 10: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

10

3. 添加环境变量 sudo gedit ~/.bashrc

export PATH=$PATH:/usr/local/arm/bin

注意:此步后要重新登录系统更改才有效

4. 检查是否建立好交叉编译环境 对 arm-linux- 使用 tab 键功能 查看 arm-linux-gcc 的版本 用 arm-linux-gcc 编译目标版的可执行程序

Page 11: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

11

Page 12: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

12

• 编译 ARM Linux 内核

1. 准备内核

2. 配置内核

3. 编译内核

Page 13: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

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

Page 14: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

14

b 配置内核 这个环节是最麻烦的,进展最慢的地方。 1 :容易出错: 2 :错误不好解决。 如果在此之前的步骤能成功完成,在这个环节会少很

多的错误,节省很多时间。所以如果有很多很奇怪的错误,最好不要盲目,先检查之前的编译工具,支持库,环境变量等是否设置正确。

当然之前能顺利完成,在这个环节还是有不少错误;对内核的配置还是有很多不清楚的地方。

关于内核编译配置选项简介可以参照下面的网址: http://lamp.linux.gov.cn/Linux/kernel_options.html

Page 15: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

15

配置内核的方式三种方式:• make config 命令行式的一般不推荐

• make xconfig

可用鼠标点击选择 • make menuconfig

菜单式,用键盘控制

Page 16: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

16

错误及解决方法• 错误 1 :• 如执行“ make xconfig” 指令 , 进入内核设

置时,系统会报错说没有 wish 命令。• 解决方法:• 根据提示进行安装 wish 即可。 Ubuntu 默

认是没有安装这个命令的。

Page 17: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

17

• 错误 2 :• 若运行 make menuconfig 会提示 ncurses

找不到,这是因为 menuconfig 用到了ncurses 库 . 系统默认没有安装 .

• 解决办法如下:• sudo apt-get install libncurses5-dev 。

Page 18: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

18

错误 3 :配置完后编译内核,开始编译。编译中报错:

这个错误很常见。

Page 19: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

19

解决方法: 这个原因是你在配置内核的时候选了 vga 的支持,去掉 c

onsole drivers 下的 vga text console 选项后重新编译

Page 20: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

20

• 错误 4:

Page 21: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

21

解决方法: 去掉 character device 中的 virtual terminal

选项。

Page 22: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

22

制作根文件系统这个环节也是很比较困难的地方,出错很多

1) 安装 busybox 工具包

2) 创建文件系统的映象文件

3) 配置根文件系统

Page 23: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

23

busybox

• 错误 1 :

Page 24: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

24

解决办法: make menuconfig , 然后选择 Networking Utilities.

将 route 项不选。

Page 25: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

25

• 错误 2 :

Page 26: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

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))( 该方法我试验成功 )

Page 27: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

27

Page 28: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

28

• 老师 PPT 关于 busybox 的介绍和编译安装虽说只有两页,自己当时也感觉不是很麻烦。可是自己真正做的时候确遇到了很多问题。

Page 29: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

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

Page 30: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

30

创建设备文件建立设备文件 , 一个简单的方法是复制主

机 /dev/ 目录下一些必要的设备文件到 /mnt/img/dev/ 目录下 .基本的设备文件有 :/dev/console /dev/fd0/ dev/null /dev/arm0 /dev/tty /dev/tty0

在复制的过程中 , 要注意使用 dp 参数以保证文件属性不变 .

Page 31: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

31

Page 32: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

32

• sudo cp -dp /dev/tty /mnt/img/dev

Page 33: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

33

• 解决方法:

• 增加映象文件的大小,重新建立 5M 的映象文件

• dd if=/dev/zero of=initrd bs=5M count=1

Page 34: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

34

ARM Linux 移植到 Skyeye 上运行

1. 安装 skyeye

在终端中输入 sudo apt-get install skyeye 命令, skyeye1.2.3 就安装好了

2. 将生成的内核映像 vmlinux 和根文件系统 initrd 拷贝到一个文件下

3. 编写 skyeye.conf 文件

Page 35: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

35

Page 36: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

36

Page 37: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

37

Page 38: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

38

Armlinux-2.6.0

• 交叉编译 ARM Linux 内核

Page 39: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

39

• 错误一:在输入“ make xconfig” 后,如果出现很多错误,原因是系统一些编译相关的软件包没有安装。

Page 40: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

40

• 在安装了相关软件后,可用看到 gcc 的版本是 4.1.3

Page 41: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

41

错误二:

出错原因:系统里的 gcc 是 4.1, 它对语法要求非常严格,导致该错误。

Page 42: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

42

解决办法:或者去注释掉出错的那一行,或将该行 static 修饰符去掉。

Page 43: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

43

错误三:

出错原因: make xconfig 运行需要相关的依赖包,出现此错误,说明此步之前没有安装 QT 开发包

Page 44: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

44

解决办法:

安装 QT 开发包,在新立得软件开发包管理器内安装右图所示的软件包。

Page 45: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

45

错误四:

我认为是: 系统里的 gcc 是 4.1, 它对语法要求非常严格,导致该错误

Page 46: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

46

做到这步终于可用出 make

xconfig

的界面了

Page 47: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

47

• 编译内核• 2.6 版可以直接用 make 命令就可用了,不

需先 make dep 后再执行 make 命令。

• 注意编译器的版本,要是 cross-3.3 以上的版本。

Page 48: 1 建立 ArmLinux 仿真开发环境 X-Men 小组. 2 内 容 1. Armlinux-2.4.18 仿真环境的建立 2. Armlinux-2.6.0 内核配置的问题.

48

谢谢

• 陈坤,刘江,衷心感谢你们的帮助!