转载自:http://blog.sina.com.cn/s/blog_70dd169101018gzs.html
本文主要内容:
搭建OKL4-3.0的运行环境,编译OKL4-3.0的自带示例程序,以及运行半虚拟化的oklinux_2.6.24.9系统。
1.实验环境
1.1主机:vmware6.5+Ubuntu8.04
备注:之所以选择ubuntu8.04搭建OKL4-3.0的运行环境,是因为OKL4-3.0的编译需要glibc2.7的库,而这个版本的c库在比较新的发行版比如debian-6.07,ubuntu-12.04以及Fedora14中均已经不支持,而ubuntu8.04标准C库就是glib2.7.
另外ubuntu8.04在ubuntu社区已经停止维护,但这并不影响我们搭建OKL4编译环境。我们只需要把ubuntu8.04DVD版本的iso作为软件源,一些关键的组件都可以在iso中找到并安装。
1.2相关软件:
OKL4源码okl4_3.0.tar.gz下载:
http://wiki.ok-labs.com/Release/3.0
http://wiki.ok-labs.com/downloads/release-3.0/okl4_3.0.tar.gz
okl4_3.0.tar.gz编译需要使用python2.4软件包:
http://download.chinaunix.net/download.php?id=63&ResourceID=35
下载交叉编译器:
arm-linux-gnueabi-4.2.4.tar.gz下载地址:
http://wiki.ok-labs.com/downloads/release-3.0/arm-linux-gnueabi-4.2.4.tar.gz
http://wiki.ok-labs.com/Release/3.0
arm-linux-3.4.4.tar.bz2下载地址:
http://www.ertos.nicta.com.au/downloads/tools/arm-linux-3.4.4.tar.bz2
2.编译OKL4源码
工作目录:/home/tom/Public/
2.1 安装python2.4
将Python-2.4.3.tar.bz2下载到/home/tom/Public/目录下,根据目录中README要求解压编译安装。
备注:之所以要安装Python-2.4.3是因为okl4_3.0使用的tools/build.py脚本使用的解释器是Python2.4。
如果在安装python2.4期间出现:
checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
说明没有安装g++编译器,执行命令:
$sudo apt-get install g++
2.2 安装交叉工具链
arm-linux-3.4.4.tar.bz2和arm-linux-gnueabi-4.2.4.tar.gz下载到/home/tom/Public/目录,直接进行解压。
2.3 编译运行OKL4
将当前上述两个交叉工具链添加到当前shell的环境变量$PATH中:
$export PATH=/home/tom/Public/arm-unknown-linux-gnueabi/bin:${PATH}
$export PATH=/home/tom/Public/opt/nicta/tools/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/:${PATH}
配置交叉工具链
解压okl4_3.0.tar.gz软件包到/home/tom/Public/目录中,修改okl4_3.0/tools/toolchains.py
中line 407到line 413:
gnu_arm_eabi_toolchain = generic_gcc_3_4_libgcc("/opt/okl/Linux-i386/arm/gcc-4.2.4-glibc-2.7/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-")
gnu_arm_toolchain = generic_gcc_3_4_libgcc("arm-linux-")
gnu_arm_nptl_toolchain = generic_gcc_3_4_libgcc("/opt/okl/Linux-i386/stow/arm-linux/bin/arm-linux-")
gnu_mips64_toolchain = generic_gcc_3_4("mips64-elf-")
gnu_mips32_toolchain = generic_gcc_3_4("mips-linux-")
arm_linux_toolchain = generic_gcc_3_4("/opt/tools/3.4/arm-linux/bin/arm-linux-")
gnu_ia32_toolchain = generic_gcc("i686-unknown-linux-gnu-")
gnu_ia32_nptl_toolchain = generic_gcc("/opt/okl/Linux-i386/stow/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-")
修改为:
#gnu_arm_eabi_toolchain = generic_gcc_3_4_libgcc("/opt/okl/Linux-i386/arm/gcc-4.2.4-glibc-2.7/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-")
gnu_arm_eabi_toolchain = generic_gcc_3_4_libgcc("/home/tom/Public/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-")
gnu_arm_toolchain = generic_gcc_3_4_libgcc("arm-linux-")
#gnu_arm_nptl_toolchain = generic_gcc_3_4_libgcc("/opt/okl/Linux-i386/stow/arm-linux/bin/arm-linux-")
gnu_arm_nptl_toolchain = generic_gcc_3_4_libgcc("/home/tom/Public/opt/nicta/tools/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-")
gnu_mips64_toolchain = generic_gcc_3_4("mips64-elf-")
gnu_mips32_toolchain = generic_gcc_3_4("mips-linux-")
#arm_linux_toolchain = generic_gcc_3_4("/opt/tools/3.4/arm-linux/bin/arm-linux-")
arm_linux_toolchain = generic_gcc_3_4("/home/tom/Public/opt/nicta/tools/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-")
gnu_ia32_toolchain = generic_gcc("i686-unknown-linux-gnu-")
gnu_ia32_nptl_toolchain = generic_gcc("/opt/okl/Linux-i386/stow/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-")
备注:其中修改的只是图中红颜色的部分。
编译OKL4代码中的一个示例:
$ tools/build.py machine=gumstix project=examples example=pingpong kdb_serial=True PYFREEZE=False
示意图如下:
2.4 安装qemu-0.13.0
下载地址:
http://wiki.qemu-project.org/download/qemu-0.13.0.tar.gz
运行命令:
$tar xvf qemu-0.13.0.tar.gz
$cd qemu-0.13.0
$./configure
$make
$make install
备注:如果在./configure的过程中出现:
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
这需要安装zlib
用如下的命令
sudo apt-get install zlib1g-dev
安装好后,再运行configure
2.5 运行OKL4 linux
下载oklinux_2.6.24.9-patch.4.tar.gz
到当前目录/home/tom/Public
备注:
下载地址:http://wiki.ok-labs.com/Microkernel
执行命令:
$tar zxvf oklinux_2.6.24.9-patch.4.tar.gz
$cd okl4_3.0
$ln -s ..\oklinux_2.6.24.9-patch.4 linux
$tools/build.py machine=versatile project=linux wombat=true TOOLCHAIN=gnu_arm_eabi_toolchain pistachio.TOOLCHAIN=gnu_arm_toolchain PYFREEZE=False kdb_serial=True KDB_BREAKIN=False
编译完成后,会在okl4_3.0/build/images/目录下产生:
运行OKlinux
执行命令:
$ qemu-system-arm -M versatileab -nographic -kernel build/images/image.boot
示意图如下:
运行效果:
3 参考资料
http://www.linuxidc.com/Linux/2010-04/25362p2.htm
http://hi.baidu.com/yyt981/item/d91f471e236a4af686ad4e76
http://blog.sina.com.cn/s/blog_48a44f390100igmp.html
http://wiki.ok-labs.com/Microkernel
http://download.chinaunix.net/download.php?id=63&ResourceID=35
http://wiki.ok-labs.com/Release/3.0
http://nchc.dl.sourceforge.net/project/skyeye/skyeye/
http://blog.csdn.net/xuqianghit/article/details/5310367
(a)注意:因为ubuntu 8.04 安装g++不太容易。且apt-get源不能用了,需要修改apt-get源。
修改/etc/apt/sources.list,将其他源注释掉。并添加以下内容即可
deb http://mirror.lupaworld.com/ubuntu/ hardy main restricted universe multiverse deb http://mirror.lupaworld.com/ubuntu/ hardy-security main restricted universe multiverse deb http://mirror.lupaworld.com/ubuntu/ hardy-updates main restricted universe multiverse deb http://mirror.lupaworld.com/ubuntu/ hardy-proposed main restricted universe multiverse deb-src http://mirror.lupaworld.com/ubuntu/ hardy main restricted universe multiverse deb-src http://mirror.lupaworld.com/ubuntu/ hardy-security main restricted universe multiverse deb-src http://mirror.lupaworld.com/ubuntu/ hardy-updates main restricted universe multiverse deb-src http://mirror.lupaworld.com/ubuntu/ hardy-proposed main restricted universe multiverse
(b)如果以上源也无法用了,可以去搜索ubuntu 8.04 安装g++,在csdn中有该资源