热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Windows下的开发环境

文章标题:Windows下的开发环境。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    我们在介绍QEMU时提到过,在Windows下你需要一个虚拟的Linux来帮你编译操作系统的源代码。将操作系统内核编译链接成ELF格式有诸多好处,我们不但可以用Linux下现成的工具(比如readelf)来分析编译好的内核,还可以在必要时参考Linux内核的源代码来帮助我们自己的开发,总之这拉近了我们与Linux之间的距离。所以不要因为在Windows下也离不开Linux这件事而沮丧,况且装一个Linux是件很容易的事情。

  不过装一个虚拟的Linux跟装一个真实的Linux还是有所不同,主要在于两点。一是我们仅仅想用这个Linux来做编译链接的工作,所以在选择组件的时候尽量去除不必要的内容,这样可以节省时间和空间;二是要确保你选择的虚拟机容易跟宿主机进行网络通信,因为你需要将宿主机上的源代码拿给虚拟机来编译。

  安装方法可以有多种选择,比较简单的方法是通过光盘安装,当然这个光盘也可以是“虚拟”的,也就是一个光盘映像。首先到你所中意的Linux发行版的官方网站下载一个安装光盘的映像,有些发行版还提供免费或付费的邮寄服务,读者可以根据自己的喜欢自行选择。这里假设你得到的是光盘映像,文件名为inst.iso。

  有了光盘映像,我们还缺少一个硬盘映像,读者可以用前文提到过的bximage来生成它,也可以使用下面的命令:

  $ qemu-img create hd.img 1500M

  这样就能生成一个大小约为1.5GB的硬盘映像了。

  接下来就可以进行安装了:

  $ qemu -cdrom inst.iso -hda hd.img -boot d

  安装过程从略,注意尽量精简你的组件,不要安装太多无用的东西。这些组件对我们是必需的:GCC、GNU Make、NASM、Samba。如果它们在安装时默认没有装上,那么你需要在系统安装结束后将它们安装上。由于目前大多数虚拟机都具有好用的网络功能,所以安装它们并非难事。

  装完之后,我们还需要解决让宿主机和虚拟机通信的问题。其实你可以把它们看成是局域网中的两台机器,局域网中适用的方法这里同样适用,所以Samba就很适合。

  首先在Windows中以可读写方式共享一个文件夹,假设叫做OrangeS,然后在虚拟的Linux上运行下面这条命令:

  $ sudo mount -t smbfs -o username=user,password=blah //10.0.2.2/OrangeS /mnt

  其中假设你的宿主机IP地址为10.0.2.2。这样在Linux的/mnt目录下就能看到Windows共享文件夹下的内容了,你可以在虚拟机中随意读写,就像对待本地文件一样。

  这样一来,你的编译环境就安装完成了,接下来,如同在Linux下一样,你还需要一个编辑器。据说始终有一部分人使用记事本(notepad)来编写代码,不管基于何种理由,希望你不要这样做,因为你可以找到许多比notepad更适合编写代码的编辑器,有收费的,也有免费的,它们通常都具备关键字颜色,自动缩进等方便开发者的功能,可以大大提高工作效率。

 

[NextPage]
    总结一下的话,搭建一个Windows下的开发环境,你需要做以下工作:

  · 安装Windows。

  · 安装Bochs(安装程序可到其官方网站获取)。

  · 安装一个你喜欢的编辑器用来编写代码。

  · 安装一个速度较快的虚拟机,如QEMU(安装程序可到其官方网站获取})。

  · 在速度较快的虚拟机上安装一个Linux。

  · 在虚拟的Linux中安装GCC、GNU Make、NASM、Samba──如果它们没有默认被安装上的话。

  · 在虚拟的Linux和宿主机之间共享一个可读写的文件夹。

  将来你的开发过程看起来很可能是这样的:

  · 在Windows中用编辑器编写代码。

  · 在虚拟Linux中用Make调用GCC、NASM及其他工具来生成内核并写入磁盘映像。

  · 在Windows中用Bochs来运行你的操作系统。

  · 如果有问题的话。

  o 用各种方法来调试,比如用Bochs;

  o 返回第1步。

  总结

  好了,到这里相信读者已经知道如何搭建自己的开发环境了,说白了它跟开发一个普通的软件区别基本就在一个虚拟机上。它既是我们的“硬件”,又是我们的调试器,有了它我们安心多了。那是不是马上就可以开始我们的操作系统开发之旅了呢?很遗憾,还不能那么着急,因为你知道,操作系统是跟硬件紧密相连的,如果想实现一个运行在使用IA32架构的IBM PC上的操作系统,免不了要具备相关的知识。其中的重头戏就是32位Intel CPU的运行机制,毕竟CPU是一台计算机的大脑,也是整个计算机体系的核心。

  所以紧接着我们要学习的,就是要了解IA32保护模式。掌握了保护模式,我们才知道Intel的CPU如何运行在32位模式之下,从而才有可能写出一个32位的操作系统。


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
author-avatar
手机用户2502904013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有