让oklinux跑起来

oklinux是让修改过的linux跑在okl4虚拟机上。网上缺乏针对于oklinux的运行总结。在下不才,折腾好久,才编译运行成功,遂记录之,以方便后来者。
下载地址:
okl4:http://wiki.ok-labs.com/downloads/release-3.0/okl4_3.0.tar.gz
linux:http://wiki.ok-labs.com/downloads/release-3.0/oklinux_2.6.24.9-patch.4.tar.gz
分别解压okl4和linux.在okl4的目录中建一个指向Linux目录的软连接:
$cd okl4_3.0
$ln -s ../linux-2.6.24.9-patch.4 linux


编译源码还需要交叉编译器。交叉编译器的下载地址
EABI:http://wiki.ok-labs.com/downloads/release-3.0/arm-linux-gnueabi-4.2.4.tar.gz
OABI:http://www.ertos.nicta.com.au/downloads/tools/arm-linux-3.4.4.tar.gz
将这两个交叉交叉编译器解压后,更改okl4_3.0/tools/toolchains.py中的:
gnu_arm_eabi_toolchain . gnu_arm_nptl_toolchain . arm_linux_toolchain,使之指向自己本机中编译器的正确位置。


然后,进入okl4_3.0,运行:
./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
可能出现的错误以及解决方法:
1.提示arm-linux-g++找不到。
在PATH中加上相应的arm-linux-g++的bin目录就可以了。
export PATH=$PATH:/path/to/bin/
2.提示phthon版本不正确。
okl4采用python2.4版本。因此,安装python2.4。在ubuntu下sudo apt-get install python2.4 .
然后改变/usr/bin/python连接的位置指向python2.4即可
3.在生成ext2ramdisk的时候出现错误。这个时候,可以按照如下的办法进行操作:
先安装genext2fs.
然后更改 tools/kenge.py
改1438行开始的
def Ext2FS(self, size, dev):
genext2fs = SConscript(os.path.join(self.oklinux_dir, "tools",
"genext2fs", "SConstruct"),
build_dir=os.path.join(self.builddir,
"native", "tools", "genext2fs"),
duplicate=0)
ramdisk = self.builddir + os.sep + "ext2ramdisk"
cmd = self.Command(ramdisk, Dir(os.path.join(self.builddir,
"install")),
genext2fs[0].abspath +
" -b $EXT2FS_SIZE -d $SOURCE -f $EXT2FS_DEV
$TARGET",
EXT2FS_SIZE=size, EXT2FS_DEV=dev)


Depends(cmd, genext2fs)


# always regenerate the ramdisk file
AlwaysBuild(cmd)
return cmd


def Ext2FS(self, size, dev):
#genext2fs = SConscript(os.path.join(self.oklinux_dir, "tools", "genext2fs", "SConstruct"),
# build_dir=os.path.join(self.builddir, "native", "tools", "genext2fs"),
# duplicate=0)
ramdisk = self.builddir + os.sep + "ext2ramdisk"
cmd = self.Command(ramdisk, Dir(os.path.join(self.builddir,
"install")),
# genext2fs[0].abspath +
"genext2fs -b $EXT2FS_SIZE -d $SOURCE -D $EXT2FS_DEV $TARGET",
EXT2FS_SIZE=size, EXT2FS_DEV=dev)


# Depends(cmd, genext2fs)


# always regenerate the ramdisk file
AlwaysBuild(cmd)
return cmd
至此,便可以生成img文件
------------------任务完成一大半--------
然后安装qemu-system-arm
下载
http://wiki.ok-labs.com/downloads/release-3.0/qemu-okl.0.9.1.tar.gz
编译
# ./configure --target-list=arm-softmmu --disable-sdl --static --disable-gfx-check
# make
运行
# qemu-system-arm -M versatileab -start-addr 0x04100000 -nographic -kernel path/to/images/image.elf

评论

此博客中的热门博文

Linux/ARM Page Table Entry 属性设置分析

提交了30次才AC ---【附】POJ 2488解题报告

笔记