Qemu-ARM-Ubuntu 实验一 环境设定 2010-05-08 04:27:23
本实验参照了http://opencsl.openfoundry.org/ 的开放实验教程。这里记录了在Ubuntu 9.10上安装qemu的过程。不保证适用于其他系统,仅供参考。
安装qemu
1. 安装qemu
sudo apt-get install qemu kernel-package linux-source kqemu-source build-essential
2. 安装module-assistant
sudo apt-get install module-assistant
3. 安装kqemu加速器
sudo m-a –f get kqemu-source
4. 下载arm-test
sudo wget http://wiki.qemu.org/download/arm-test-0.2.tar.gz
tar xzvf arm-test-0.2.tar.gz
5. 启动ARM
qemu-system-arm -kernel zImage.integrator -initrd arm_root.img cntl-alt-f1 to kill back to your system 我简单使用ctrl-c终止了qemu,不知道别的方法是什么 用buildroot制作toolchain 1.下载相关软件 sudo apt-get install bison flex gettext patch build-essential texinfo sudo apt-get install subversion sudo apt-get install libncurses5-dev
2. 下载buildroot原始代码
svn co -r 21163 svn://uclibc.org/trunk/buildroot
3. 更改configure并且编译
make menuconfig make
这里可能会遇到一个版本问题,我采用了old-release
wget --passive-ftp -P /home/wisr/Documents/arm-test/buildroot/dl http://www.uclibc.org/downloads/old-releases/uClibc-0.9.29.tar.bz2
等待很长时间以后,编译完成了。
4.设置环境变量
export PATH=<buildroot>/build_arm/staging_dir/usr/bin:$PATH
这里<buildroot>是你自己buildroot的路径
reference website: http://www.hopelesscase.com/linuxnotes/qemu#head-7a0b7d1e65c8991da37befc15d77253b520b2ff0 http://opencsl.openfoundry.org/Lab01_intro.rst.html http://www.armadeus.com/wiki/index.php?title=Armadeus_3.2_Troubleshots
这次实验主要完成一个linux内核的编译
1. 下载内核文件
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6. 18.1 .tar.bz2 tar jvxf linux-2.6.18.1.tar.bz2 cd linux-2.6.18.1 2. 清理已有的设置 make mrproper 3. 下载configure文件 wget http://opencsl.openfoundry.org/setting/linux-2.6.18.config make menuconfig ARCH=arm 4. 编译内核 make ARCH=arm CROSS_COMPILE=arm-linux-uclibc- 这里需要在sumversion.c中加入#include <linux/limits.h> 注意需要将auditing选项去掉,参见 http://www.shx-arm.com/qianjichu26.aspGeneral setup --->
() Local version - append to kernel release
[*] Support for paging of anonymous memory (swap)
[*] System V IPC
[*] POSIX Message Queues
[*] BSD Process Accounting
[*] BSD Process Accounting version 3 file format
[*] Sysctl support
[ ] Auditing support
(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
[*] Support for hot-pluggable devices
[*] Kernel Userspace Events
[*] Kernel .config support
[*] Configure standard kernel features (for small systems) --->
http://forum.ubuntu.org.cn/viewtopic.php?f=97&t=231443&start=0
尝试交叉编译了ARM-Linux内核,基本方法网上已经有论述,就是下载kernel源代码,然后
make ARCH=arm menuconfig
make bzImage
然后加载module之类
最后,kernel的image成功生成,但是加载module的时候失败。分析原因是一些驱动的ko文件没有
生成,基本的解决思路是在menuconfig里取消这些驱动。这个问题没有继续往下做了,因为已经花费
了较多时间了。
这个实验基本了解了Kernel内核编译的流程。注意很多时候,解决Kernel中的问题只需要简单的取消对应
的选项就好了。因为现在的Kernel规模很大,对应的drivers之类的也很多,全部选择很容易出现编译错误。
事实上并不是所有的驱动都需要编译到Kernel中。
接下来进行操作系统的学习,系统了解操作系统的概念,并且开始学习一个小的但是典型的操作系统。