我好像每年都要倒腾一次这种东西。由于需要学习KVM在ARM上的虚拟化技术,缺乏必要的硬件支持,所以必须在PC上模拟ARM平台。。大约是安装若干个操作系统,然后模拟下看性能。。。
参考http://www.virtualopensystems.com/media/kvm-resources/kvm-arm-guide.pdf进行配置。
平台搭建,是个极其需要耐心的活儿==|
1、安装所需要的工具链
2、安装FastModels。直接去ARM官方网站下载。解压之后运行./setup.bin即可。注意需要注册获得license,是个evaluate的,没有破解的方法。。。
3、运行sgcanvas
之前要首先进行环境变量的设置:
首先是liscense.dat的位置
exportARMLMD_LICENSE_FILE=/home/himiko/IBM/ARM/license.dat
路径写你自己的license.dat的路径
其次是FastModelsTools_7.1的安装地址
exportMAXCORE_HOME=/home/himiko/ARM/FastModelsTools_7.1
同样的,写你自己的FastModelsTools_7.1的安装路径~
然后是Protfolio那个地址的设置
exportPVLIB_HOME=/home/himiko/ARM/FastModelsPortfolio_7.1
最后终于可以运行了
建议同志们直接将setup_all.sh添加到~/.bashrc的最后一句中。如下
gedit ~/.bashrc
source~/ARM/FastModelsTools_7.1/etc/setup_all.sh
4、按照那个Guide里面的指示,选取已有的Examples进行编译~
选择/home/himiko/ARM/FastModelsPortfolio_7.1/examples/RTSM_VE/Build_Cortex-A15x1/里面那个唯一的项目加载到FastModels中,加载完成的结果是这个样子的(至少我加载出来是这样。。。)
5、Project->BuildSystem
显然出现了GCC错误的信息。设置GCC为GCC,不要指定版本
设置完毕之后再Project->BuildSystem
然后传说中的Arm-CoretexA15就模拟编译好了,接下来就是装Linux的任务了
6、首先安装arm上的gcc4.6之类的crosscompiler环境
sudo apt-getinstall gcc-4.6-arm-linux-gnueabi binutils-arm-linux-gnueabilibc6-armel-cross linux-libc-dev-armel-cross libncurses5-devgcc-arm-linux-gnueabi libc6-dev-armel-cross cpp-arm-linux-gnueabi
然后等他装就好了,看你网速了
7、下载kvm映像
wgethttp://www.virtualopensystems.com/media/kvm-resources/uImage
8、下载git然后需要git下KVM代码
下载git
sudo apt-getinstall git
git clonegit://github.com/virtualopensystems/linux-kvm-arm.git
此步时间相当长,做好心里准备……
cd ~/linux-kvm-arm
9、下载uboot制作image
sudo apt-getinstall uboot-tools
10、设置ARCHCROSS_COMPILE变量。文档中的意思是直接使用已经有的那个
先装curl
sudo apt-getinstall curl
然后获得配置文件
curlhttp://www.virtualsystems.com/media/kvmresources/kernel-config>.config
下面生成配置文件
CROSS_COMPILE=arm-linux-gnueabi-ARCH=arm make menuconfig
执行完毕后如下:
我打开了networking和virtualization~反正要是不够的话下次再进来配置好了~
最后编译hostkernel(等~)。好吧,没多久就会有问题的。。。
百度一下,我就知道。。。。直接执行这个命令,因为缺少了mkimage工具
sudo apt-get install uboot-mkimage
然后再编译吧
CROSS_COMPILE=arm-linux-gnueabi-ARCH=arm make uImage
很快就结束了。。。
11、然后抓FDT
git clonegit://github.com/virtualopensystems/arm-dts.git
./scripts/dtc/dtc-O dtb -o host-a15.dtb./arm-dts/fast_models/rtsm_ve-cortex_a15x1.dts
./scripts/dtc/dtc-O dtb -o guest-a15.dtb./arm-dts/versatile_express/vexpress-v2f-2xv6-ca15x2.dts
12、抓新的bootloader
git clonegit://github.com/virtualopensystems/boot-wrapper.git
clean之后make
make clean
CROSSS_COMPILE=arm-linux-gnueabi-ARCH=arm make
13、这个bootwrapper是后面启动host时候需要使用的
make clean
CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm make
14、通过nfs server方式搭建host的root文件
sudo apt-get install nfs-kernel-server nfs-common
/srv/nfsroot 192.168.0.0/255.255.0.0(rw,sync,no_root_squash,no_subtree_check,insecure)
每次修改完成这个文件之后必须重新启动nfs server
sudo /etc/init.d/nfs-kernel-server restart
wget http://www.virtualopensystems.com/media/kvm-resources/fs-alip-armel.cramfs
sudo mount -o loop -t cramfs fs-alip-armel.cramfs /mnt
sudo cp -a /mnt/* /srv/nfsroot/
sudo umount /mnt
16、编写fast models的启动参数。cd到刚刚编译出来的Cortex-a15下
cd ~/ARM/FastModelsPortfolio_7.1/examples/RTSM_VE/Build_Cortex-A15x1/Linux-Release-GCC-4.1
gedit params
在params文件中写以下参数
motherboard.smsc_91c111.enabled=1
motherboard.hostbridge.userNetworking=1
cluster.cpu0.semihosting-cmd_line="--kernel /home/himiko/uImage --dtb /home/himiko/linux-kvm-arm/host-a15.dtb -- earlyprintk console=ttyAMA0 mem=2048M root=/dev/nfs nfsroot=192.168.63.117:/srv/nfsroot/ rw ip=dhcp"
model_shell cadi_system_Linux-Release-GCC-4.1.so -f params ~/boot-wrapper/linux-system-semi.axf
注意,路径需要根据自己的实际情况进行修改!!!!