MacOS新平台工作环境的迁移

2016-11-10 10:33:07来源:作者:Nicol的博客铭人点击

第七城市

感谢厨神Tim Cook在10月27日短暂而又精彩的MacBook Pro发布会,让我在期待了大半年之后,终于毫不犹豫地下单购买了2015年初期版本的老款Macbook Pro。新版Macbook Pro做的更加轻薄靓丽,无不彰显了Apple强大的工业设计能力,但是抛开缺了苹果标志的信仰灯不能装逼了暂且不说,Macbook Pro不仅仅是专供美工使用的,对于广大程序员同志而言缺失实体Esc和Fn键是不能容忍的,况且这次更新后处理器、内存方面并没有什么变更,对于实用主义者来说新款版本更新动力不大。

其实对于Linux平台的程序员而来,当经历过人生最能折腾的年代玩遍各大发行版之后,绝大多数人都投皈依到了MacOS的门下,而现在我就属于其中的一位,其中最主要的原因就是MacOS系统和Linux系统具有着极大的亲缘性,MacOS的很多组件都移植自开源的BSD系统,所以Linux程序员在MacOS下用Terminal会有十分亲切的感觉,同时对于原生没有打包进MacOS的软件和工具,外挂神器homebrew更是让其如虎添翼,基本Linux下的绝大多数软件包括gcc都可以一句命令安装,方便的不得了。除此之外就是MacOS系统良好的美学设计和极为完善的软件生态系统,大多Windows下的软件都有Mac的版本,更是可以让那些长久以往而来对Linux桌面怒其不争的人彻底摆脱双系统的困扰。

MacOS系统的软件,参见文章末尾的两个推荐链接就可以了。能力充裕财务自由的还是买正版吧,毕竟自己也是做软件的,破解软件虽然能省几个钱,有些需要打开系统安装未认证软件的权限,风险得失自己平衡。我把自己用到的软件罗列如下:

Alfred3、iTerm、zsh、oh-my-zsh、搜狗输入法、WizNote、ShadowsocksX、WingIDE、Chrome、QQ、WeChat、SlickEdit、DropBox、Steam、KeePassX、VLC、ThunderBird、Sublime、Microsoft Office 2016、Photoshop CC、网易云音乐、Thunder、VMware Fusion、BetterZip、SecureCRT、Navicat Premium、iStat Menus、MacVim、Snip、MacDown、Moom、Adobe Acrobat Pro、CheetSheet、PopClip、CleanMyMac 3

当然上面的软件可能不是最优的,主要是以前一些常在Windows和Linux下面使用的软件保存了一些数据,如果换成别的软件数据的迁移会比较的麻烦,因此不是特别差的也将就着用了。

关于虚拟机,可能大家会疑惑,前面刚把万能的MacOS系统吹的天花乱坠兼容类Unix系统,有着类似Windows系统良好软件生态圈,为什么还是摆脱不了虚拟机的宿命呢?其实对于大多数不涉及系统级的开发,MacOS算是够用了,但是作为服务端开发的人,时常需要使用操作系统底层的异步特性,虽然select是Posix标准以至于连Windows都支持,但是对于高性能的异步构架却不然:Windows使用的I/O completion ports,BSD、MacOS使用的kqueue,Linux使用的epoll,基本是各自为政,所以要进行Linux的服务端软件开发调试,就不得不安装个虚拟机,然后再装一个原生的Linux操作系统才行。

MacOS下面的虚拟机算Parallels Desktop、Vmware Fusion、VirtualBox三分天下,VirtualBox据说其代码写的稀烂就PASS了,Parallels Desktop在苹果上使用的最为广泛,但是发现其对最新的Ubuntu 16.04 LTS支持的不好,最后就选择了Vmware Fusion了,其向来对Linux支持的最为完善,而且现在虚拟机的催化剂VMware Tools也已经交与社区维护了,所以现在各大主流的Linux发行版的官方仓库都集成了open-vm-tools-desktop软件包,可以一键虚拟机加速了,每个发行版都会对其进行测试验证,所以显然这样对Guest OS的支持是最优的了。

安装系统就不说了,需要注意的是:把虚拟机完全备份之后要排除在TimeMachine之外,否则很快你的备份硬盘就会被撑爆掉,其次Guest OS就不要开高分Retina分辨率了,虽说Ubuntu对高分屏支持的不错,但是你的显卡会爆掉的。这里主要讲究的是在MacOS和Linux之间通过NFS的方式共享文件,为啥选择NFS而不是CIFS或者vmhgfs,主要是因为NFS是类Unix下原生的东西,对Linux文件系统的特性和语义算是支持的最好的,操作如下:

(1). 在Host MacOS上面建立/etc/exports,并且导出自己想要共享出去的目录,后面-mapall是要共享出去的user和group。注意MacOS下面nfsd服务端文件共享的配置格式和Linux平台下是不一样的

➜ cat /etc/exports/Users/taozj/Dropbox/ReadTheCode/ -network 172.16.20.0 -mask 255.255.255.0 -mapall=taozj:staff:ubuntu/Users/taozj/Dropbox/GitHub/ -network 172.16.20.0 -mask 255.255.255.0 -mapall=taozj:ubuntu:staff➜

(2). 让nfsd开启自动启动,然后每次修改了上面的/etc/exports,都可以用nfsd update进行刷新

➜ sudo nfsd enable➜ sudo nfsd start➜ sudo nfsd update

(3). 使用nfsd checkexports可以检查/etc/exports是否有配置错误,showmount -e列出本机成功共享出去的目录信息

➜ nfsd checkexports➜ showmount -eExports list on localhost:/Users/taozj/Dropbox/ReadTheCode 172.16.20.0/Users/taozj/Dropbox/GitHub 172.16.20.0

(4). 这个时候可以在Linux平台命令行挂载是否成功,如果你是Ubuntu系统,你会看到共享过来的文件属主为(501,dialout),那是因为在MacOS配置nfsd的时候使用的-mapall=taozj参数,我的用户taozj的uid和gid刚好是(501,20),而Ubuntu上面默认第一个常规用户的uid是从1000开始的,而gid=20刚好代表dialout组,所以得到了这么个奇怪的用户所有者。解决的方法要么配置idmapd服务进行id映射,我就找了个简单的方法偷个懒,在Linux下面将当前用户的uid变成和MacOS一样的501

root@ubuntu:~# usermod -u 501 userroot@ubuntu:~# usermod -a user -G dialout

通过这个操作,用户user的uid将会从1000变成现在的501,同时/home/user目录下的所有文件的属主也会自动被修改,其他位置的文件可能需要手动chown操作,挂载测试是否成功,读写是否正常,没有问题的话就可以写入/etc/fstab中开机自动挂载

172.16.20.1:/Users/taozj/Dropbox/ReadTheCode/ /home/user/MacOS/ReadTheCode nfs auto,rw,noatime,nolock,intr,tcp,actimeo=1800 0 0172.16.20.1:/Users/taozj/Dropbox/GitHub/ /home/user/MacOS/GitHub nfs auto,rw,noatime,nolock,intr,tcp,actimeo=1800 0 0

然后在网络上无意中浏览到了MacOS移植了BSD的xhyve容器库,不知道怎么样,玩容器的伙伴又可以摆弄了。

电脑买回来预装的EI Caption,用着这个版本也好,因为每次苹果系统的升级都会修复旧款设备运行过于流畅的Bug,况且据说新版的macOS Sierra软件兼容性和其他稀奇古怪的问题之多多,本人也就懒得升级了。工作环境的切换真心费神费力,希望这次入驻Mac平台后,Dropbox和TimeMachine能够保平安,让我把有限的精力投入到更加有意义的事情上去。

MacOS平台软件推荐帖

http://miao.hu/2012/02/26/osx-exp-share/

https://github.com/hzlzh/Best-App

本文完!

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台