Windows+VirtualBox的嵌入式Linux开发环境的搭建

最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用以前的阅读源码的工具KScopse软件了,阅读源码不方便,Linux驱动开发会用到Linux的很多头文件,源码树,查看很不易,同时。linux下的vim编写代码的速度比windows下的notepad++要慢,个人感觉的。但是代码编译必须使用Linux系统,于是就想出了在虚拟机中搭建服务器,在windows中使用Source Insight编码,写完后拿到服务器编译,在服务器上开启nfs文件系统,开发板挂载nfs文件系统。网上很多开发环境都是用VMware建立的,我在VirtualBox中设置了很多次都失败了,最后翻看了很多资料,建立了基于VirtualBox的开发环境。不过很希望读者能先熟悉Linux物理机上的环境搭建与操作,最后转到Windows下开发,这样对学习更有利,笔者的环境是:

主机:windows8

虚拟机软件:VirtualBox4.3.0,开源软件,Oracle官网上有下载。

虚拟机系统:中文Ubuntu12.04 桌面版

配套需要的软件:Secure CRT,cuteFTP

下面介绍过程:

第一步:首先在Windows上安装VirtualBox虚拟机,这款虚拟机是Oracle公司的开源软件。免费小巧,使用方便。安装过程中当询问网卡驱动时,需要注意要安装Host-Only适配器驱动以便接下来可以使用Host-Only网络连接。

第二步:配置虚拟机,VirtualBox和VMware差不多,略有区别,新建一台虚拟电脑,注意设置虚拟电脑的网络时将网卡配置为NAT地址转换,以便使用主机网络,这时主机需要联网。在虚拟电脑中安装Ubuntu系统,这里默认为读者会简单的使用Linux系统,并会在虚拟机中安装Linux,这些内荣百度到处都有,不过既然准备从事Linux嵌入式开发,必须会使用Linux系统,这是前提。

第三步:进入虚拟机的Ubuntu,安装ftp服务,以便在Windows中使用cuteFTP与虚拟机交互文件,使用sudo apt-get install vsftpd,安装完后,打开/etc/vsftpd.conf文件,去掉local_enable = YES和write_enable = YES前面的#号,重启ftp服务,sudo  /etc/init.d/vsftpd restart,接着安装SSH服务,sudo apt-get install openssh-server,使用默认配置就好了,安装nfs服务,sudo apt-get install nfs-kernel-server portmap,打开/etc/exports文件,修改配置文件,添加nfs文件共享目录,比如我的目录是:/home/wangzx/nfs_root,则添加:/home/wangzx/nfs_root *(rw,sync,no_root_squash),然后重启nfs服务,sudo  /etc/init.d/nfs-kernel-server restart,至此,虚拟机中的Ubuntu的网络配置环境已经完成,如果有其他需要的软件,自行安装,接下来虚拟机不再需要主机的外网了。

第四步:关闭虚拟机,重设网络,打开网卡1,配置如图

该网卡以后为了开发板能挂接虚拟机中的网络文件系统nfs。

打开网卡2,配置如图:

这张网卡,将会完成虚拟机与物理机的交互,在这里提一个知识点,为什么使用两张网卡,因为桥接网卡,是指将虚拟机的网卡和物理机的网卡处于同一网段,组成局域网,这样就可以让物理机和虚拟机通信并和开发板组网,但是桥接网卡的前提条件是,主机连网线并且已经建立了网络连接,因此在开发板和主机尚未建立网络连接时,虚拟机和物理机是不能进行网络交互的,为了让物理机和虚拟机在任何时刻都能文件交互,所以添加第二张网卡,使用Host-Only网卡,在你的网络共享中心中:

这个网卡的IP地址被默认为192.168.56.1, 我们使用默认设置,而虚拟机如果开了这个网卡,则Ubuntu的该网卡的IP默认设置为192.168.56.101,

这些可以修改,在虚拟机配置网卡时修改,这里使用默认,打开虚拟机,我们ping一下192.168.56.1,

同样,windows下也能ping虚拟机。

第五步:在windows中安装cuteFTP,自己百度安装,然后打开软件,

输入主机IP,登录名,密码,点连接按钮,则建立了FTP连接,这样就可以使用鼠标拖动文件进行上传和下载,我们就使用这种方式在windows中编写代码,拖到虚拟机服务器中编译。完了也可以拖回windows。

第六步:安装SecureCRT软件,新建一个SSH2连接:

完成后连接,则登陆上了服务器,

这样就可以在终端中操作服务器。

第六步:开nfs服务,并使用开发板测试,将本地网卡的IP设置为和你的开发板虚拟机一个网段,我的开发板IP为192.168.2.100,所以将windows的IP设置为192.168.2.*,虚拟机中桥接的那张网卡一样设置,注意不是Host-Only的那张,那张不要动。

这样就配置好了第二张网卡,环境搭建好了,接下来测试。

打开开发板,接上网线和串口线,使用SecureCRT打开一个串口,启动开发板,然后将内核镜像文件拷贝到你的共享目录,记得将共享目录设置为777,使用chmod 777 共享目录 -R,然后打开/etc/hosts文件,添加一行,“开发板IP  nfs服务器目录”比如我的是:192.168.2.100 /home/wangzx/nfs_root/这样就好了,然后就可以使用开发板u-boot的nfs下载内核了,

下载成功,启动内核:

最后nfs根文件系统挂载成功,这样完整的开发环境搭建完成了。我们可以在windows中编写代码,也可以使用source insight查看代码,编写完后上传到服务器编译,挂载网络文件系统,操作服务器使用终端,这样一切操作都简单了,学习什么的就更方便了。

原创声明:本文属原创,转载请注明出处

冰雪王爵.obj

2014年2月3日

用Windows+VirtualBox搭建嵌入式Linux开发环境的更多相关文章

  1. Windows下搭建objective C开发环境

    摘自:http://blog.csdn.net/zhanghefu/article/details/18320827 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开 ...

  2. 「C语言」在Windows平台搭建C语言开发环境的多种方式

    新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于  Windows 平台搭建C语言集成开发环境 ...

  3. Windows下搭建Spark+Hadoop开发环境

    Windows下搭建Spark+Hadoop开发环境需要一些工具支持. 只需要确保您的电脑已装好Java环境,那么就可以开始了. 一. 准备工作 1. 下载Hadoop2.7.1版本(写Spark和H ...

  4. windows下搭建nginx+php开发环境

    windows下搭建nginx+php开发环境 1.前言 windows下大多我们都是下载使用集成环境,但是本地已经存在一个集成环境,但不适合项目的需求.因此准备再自己搭建一个环境. 2.准备 工具: ...

  5. 嵌入式linux开发环境构建

    2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...

  6. Windows下搭建Android NDK开发环境及命令行编译

    首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...

  7. 【RN - 基础】之Windows下搭建React Native开发环境

    前言 React Native由Facebook公司于2015年F8大会上开源,其主张“Learn once, write everywhere”.React Native的核心设计理念是:既拥有Na ...

  8. C++开发安卓、windows下搭建Android NDK开发环境

    1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...

  9. 【原创】Windows平台搭建Kafka源代码开发环境(Eclipse版本)

    最近在研究Kafka源代码,需要自己搭建一个开发环境.官网上给出的提示略显简单,照着做了一遍也碰到了一些问题.特此记录下来. 开发环境: Oracle Java 1.7_u71 + Eclipse 4 ...

随机推荐

  1. Xcode开发中 Code Snippets Library 的相关用法

    当在进行项目的时候,总会遇到很多相同的写法.因此,我们可以使用Code Snippets Library 来进行代码小片段的“封装”: 以Xcode中常用的属性为例: 使用步骤如下: 1.在Xcode ...

  2. JS正则表达式将url转成json格式

    var url = location.search.substr(1); param = {}; console.log(url); url.replace(/([^?&]+)=([^?&am ...

  3. PHP初学习笔记(2015/4/8)

    //echo C('name'); App/Action/IndexAction.class.php文件夹下的 URL模式 //输出URL模式 //echo C('URL_MODEL'),'<b ...

  4. workspace路径有中文情况会报java.net.MalformedURLException: unknown protocol: d错误

    原因及描述:java读取xml文件时如果出现中文字符就会出现这类错误 解决方法:   1.将中文路径改为英文路径 2.读取file时"file:///d:/" 而不是"d ...

  5. Oracle ITL(Interested Transaction List)理解

    ITL(Interested Transaction List) ITL是位于数据块头部的事物槽列表,它是由一系列的ITS(Interested Transaction Slot,事物槽)组成,其初始 ...

  6. SQL常用字段类型

    中文常用字段类型 1.   名称类    nvarchar(10) 2.   数量       int 3.   时间      date 4.   货币      money 5.   编号     ...

  7. Yii2中数据过滤方案

    1. 将数据赋值给model对象再通过model保存数据到数据库时有两种方法. 1) load()再save(). 这种可以通过$model->setScenario('test_scenari ...

  8. 索引中include的魅力(具有包含性列的索引) (转)

    开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [索引覆盖] 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会 ...

  9. sql执行

    一.提高sql执行效率---in与exist . where column in (select * from table where ...) . ...where exists (select ' ...

  10. ECMAScript 5中的数据属性和访问器属性

    简介 ECMAScript 定义的对象中有两种特殊的属性, 这两种特殊的属性在你定义对象属性时就会赋予, 我们在必要时可以改写这两种特殊的属性让其属性的访问更加的合理化, 这两种特殊的属性称呼及作用如 ...