首页 > Mac > 在 Mac 下配置 Linux Kernel 开发环境

在 Mac 下配置 Linux Kernel 开发环境

自从我的 主要办公环境转到 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

然后, 就可以

$ ssh vbox

PS

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

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

分类: Mac 标签:
  1. apporc
    2013年11月12日02:01 | #1

    看来mac还是很无聊的。 我想其实大家需要并不是mac, 而是像mac一样酷的一个linux.

  2. mathslinux
    2013年11月12日02:42 | #2

    @apporc 作为一个使用linux > 7年的老鸟:), 我用mac纯粹是为了方便, 这两天在新公司上班这点太明显了.

  3. 2013年11月17日05:31 | #3

    也许你可以向Linus学习,据说他在苹果机上装了Linux。

  4. mathslinux
    2013年11月17日06:52 | #4

    @linuxqc 我也想过, 但是一方面 OS X太好用了, 一方面 linux 下的桌面系统都太渣了, linus 老大不是也在各种桌面环境间换来换去吗

  5. Krast
    2013年12月17日10:11 | #5

    黑苹果路过 I5 16G 128ssd + 1THDD的笔记本

  6. Krast
    2013年12月17日10:12 | #6

    黑苹果路过 I5 16G 128ssd + 1THDD的笔记本,开发还是linux方便,不过mac也很强大,比较喜欢iterm2

  7. mathslinux
    2013年12月19日06:38 | #7

    @Krast
    现在用服务器开发, linux 和 mac 区别不大了 🙂

  8. WANG
    2014年1月20日13:42 | #8

    mathslinux, 我想请教个小问题,我对Linux一点也不熟悉,纯粹一个新手,我想问一下最小化安装Ubuntu是不是就是在安装Ubuntu时的一个选项?还是安装Ubuntu minimal ISO?

  9. WANG
    2014年1月20日13:52 | #9

    apporc :看来mac还是很无聊的。 我想其实大家需要并不是mac, 而是像mac一样酷的一个linux.

    哈哈,生命在于折腾,给大家一个折腾的接口而已。

  10. mathslinux
    2014年1月20日15:34 | #10

    @WANG 我没记错的话, minimal iso 好像只是安装光盘比较小, 安装的时候是从网络上下载软件的. 我觉得 ubunt server 版本可以满足你的需求, 安装的时候你可以选择不需要的软件包, e.g. gtk 等等, 我在部署各种云服务使用的 ubuntu 模板就是基于 ubuntu server 的 ISO 的.

  11. WANG
    2014年1月21日10:20 | #11

    @mathslinux
    明白了,谢谢。

  12. Tyrion
    2014年10月6日07:40 | #12

    您好,我想在mac下开发kvm,有什么办法吗?

  13. Tyrion
    2014年10月6日08:00 | #13

    @Tyrion
    不用了,谢谢,以解决

  1. 本文目前尚无任何 trackbacks 和 pingbacks.