在 Mac 下配置 Linux Kernel 开发环境

#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org

自从我的 主要办公环境转到 Mac 下 之后, 我的开发方式经历了从 native –> remote server 的转变. 但在有时公司网络很差, 而周末我在家里又想研究一些非得在 Linux 下运行的程 序的时候, 麻烦就来了. 比如 Linux kernel, KVM 等等.

不过作为一个虚拟机爱好者(QEMU/KVM contributor), 这种事情应该难不倒我才对. 非常不幸, KVM 不支持 OSX, 或者说, OSX 不支持 QEMU 下的某一种 CPU 模拟的加速(KVM,XEN,或 kmod). 直接后果就是, 如果我用 QEMU 原生的 TCG 翻译, 那么性能会差非常多, 多到不能忍受, 躲到 可以放弃节操!

万邦无奈之下, 只好把节操先丢一边, 把 Virtualbox 先用起来再说.

VirtualBox 的官方下载页面 下载安装最新的版本. 再根据个人喜好安装一个 Linux 发行版, 这里为了省事我选择最新的 Ubuntu-13.10. 安装好 Ubuntu-13.10 之后, 照着我之前写的 在 QEMU 上使用 KGDB 调试内核 就没有问题了.

以下策略是为了最小化资源占用所做的配置, 没办法, 我的 Macbook Air 只有 4 GB 的内存, 我还要在虚拟机里面开 QEMU 调试 kernel, 所以不得不省着点用.

策略 1:

务必最小化安装 linux, 什么乱七八糟的 X, unity, gnome 都不要安装, 这样 不仅可以节省大量的空间和安装时间, 还可以节省很多内存.

策略 2:

为了方便调试和开发, 采用 ssh 登陆到 geust 的方式, 由于我用的是 NAT 的网络 模式, 为了能方便地访问虚拟机, 需要做 host <–> guest 的端口转发:

在 设置 –> 网络 –> 端口转发, 添加一条名称为 ssh, 协议是 TCP, 主机端口 3456, 子系统端口 22 的规则, 其他部分留空即可.

这时, 即可以用以下指令直接连接到虚拟机

$ ssh -p 3456 root@127.0.0.1

为了更方便的能连接到虚拟机, 可以把主机的 ssh 秘钥复制到虚拟机的 ssh 配置文件里. 然后在 $HOME/.ssh/config 文件里添加一个配置条目

Host vbox
    HostName 127.0.0.1
    User root
    Port 3456

之后, 就可以直接

$ ssh vbox 

就直接连接进入虚拟机了

策略 3

为了节省运行时内存, 减少应用程序的窗口, 可以用 headless 模式打开虚拟机, 并且关闭 rdp. 这类似于 QEMU 的 nographic 模式, 就像用命令行启动 VBOX 一样.

$ VBoxHeadless --startvm ubuntu-13.10 --vrde off

然后, 就可以

# apt-get update && apt-get build-dep qemu

PS

我知道有一个叫 vagrant 的东西可以把上述步奏都一次性完成, but:

  • 我没有时间去熟悉他的配置和用法, 编写(寻找)需要的 guest 的配置文件
  • 我完成上诉的结果花了不到 10 分钟.
  • 我现在开始我的开发之旅只需 ssh vbox, 而且资源占用小到不行.

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦