Jump to Navigation

mac os x的linux化改造

brew 包管理

安装一些包还是比较方便的,虽然限制比较大。

有些GUI程序也可以通过brew 来安装。

终端软件:iterm2

iterm2的问题,方向键盘导航响应速度慢。

和konsole相比,还是差太多了。

这应该不是哪个终端软件的问题,而应该是系统问题。

brew install coreutils findutils binutils gawk gnu-sed gnu-tar

brew install git golang python python3

brew install libtool automake autoconf check

brew install emacs-plus

brew install google-chrome thunderbird evernote virtualbox iterm2 skype

brew install Caskroom/cask/osxfuse

brew install Caskroom/cask/xquartz

注:brew 安装还是需要代理服务器的。

模拟 Linux 的 /home/user

要这么做的原因是,/Users/user打破了我的linux上的一些脚本工具,路径不对。

默认情况下,OS X 的/home 是一个特殊挂载的目录,无法直接这么synlink过来,

ln -s /Users/user => /home/gzleo

修改 /etc/auto_master 文件,注释掉 /home auto_home xxx 一行。

执行 autoremount -cv

执行 umount /home

sudo ln -s /Users/user /home/gzleo

这样,类似原始*nix的/home/user就回来了,虽然是软链接的方式实现的。

还有一种方式,是改变用户名和$HOME位置,“偏好”=》用户和组=》解锁=》右键=》高级

清掉默认的几个命令行程序

rm -rf /Library/Developer/CommandLineTools

虚拟机Linux

目标,能够同时用的OSX的易用UI和Linux的易用的命令行。

1、共享OSX的$HOME目录到Linux虚拟机

这里有两个选择,

  • 一个是共享到Linux,挂载到Linux系统成非$HOME目录。
  • 一个是共享到Linux,挂载成Linux系统成$HOME目录。

虚拟机使用的是virtual box,挂载如下:

mount -t vboxsf  -o uid=1000,gid=10 <share-name>  /path/to/share

可以写在/etc/fstab配置文件中:

<share-name> /path/to/share  vboxsf uid=1000,gid=10  0 0

当挂载成为Linux系统的$HOME目录后,也就是OSX的用户目录与Linux的用户目录完全共享,到这一步还没有问题的。

2、无缝开启一个Linux虚拟机的终端程序

这个的作用是,可以很容易的用命令行操作Linux系统命令行。

方式是使用ssh 的 X11 forward功能。

选择的程序是konsole。

由于OSX不自带X服务端,需要自己安装xquartz包。

ssh -p 2222 -XY gzleo@127.0.0.1 ‘konsole'

这里的2222端口是Linux虚拟机的22端口映射,virtualbox自带的端口转发功能。

如果这一步要实现的话,前一节中的挂载方式2就有点问题了。因为xauth使用的.Xauthority文件冲突,目前这是还需要解决的。在没有解决这个问题之前,只能选择前一节中的挂载方式1,或者放弃这一步,采用ssh的方式使用Linux虚拟机的命令行终端。

虚拟机设置中关闭“使用国际标准时间”一项,避免虚拟机中时间有时差。

Linux虚拟机XAUTHORITY设置

在使用上一节中挂载方式2的时候,由于OS X宿主机的.Xauthority会共享到虚拟机,而虚拟机中的sshd又需要创建一个.Xauthority文件,这时产生冲突。

这时,需要修改主机或者虚拟机的.Xauthority文件的位置,比如:

在OS X宿主机上默认是$HOME/.Xauthority,而虚拟机上修改为/tmp/.Xauthority-r。

或者反过来也可以,但是目前还不知道要怎么改变OS X 宿主机的设置。

在虚拟机上设置,

首先,开启/etc/ssh/sshd_config中的PermitUserEnvironment yes

在$HOME/.ssh/environment文件中写入一行: XAUTHORITY=/tmp/.Xauthority-r

这样在 ssh -X 重新连接的时候,两端的.Xauthority就不会冲突了,于是共享完美了。

替换自带sshd

一般的方式是修改系统自带的配置文件,其实考虑运行一个raw方式的sshd server,最好与系统自带的没有关系,也不需要在“偏好设置”里开启“远程访问。

因为系统自带的sshd这个搞的太烂,改下就要重启系统,受不了。

这里使用的是brew install openssh版本。

前台运行测试:

/usr/local/sbin/sshd -f /usr/local/etc/ssh/sshd_config  -D -e -d -d -d

FAQ: ssh_exchange_identification: Connection closed by remote host

ANS:把sandbox改为yes

要注意的配置,

Port 22 => Port 2200

UsePAM no => UsePAM yes

UsePrivilegeSeparation sandbox  =>  UsePrivilegeSeparation yes

PermitUserEnvironment yes

启动服务管理

brew services

supervisord

TODOS

这几个网络命令难用的很,却还没有找到替换命令,Linux上都已经进化到ss, ip addr, 了。

netstat, ifconfig,

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Story | by Dr. Radut