menu

把笔记本变成远程开发机

1 概述/前言

在上家公司零元购了一台淘汰的办公电脑, 本来是把他放在Window PC娱乐机旁边。 8b8490db8c3d44cc0491c76d66928d2.jpg 但这样就挤占了本来就不宽裕的桌面空间, 而且需要在两套键鼠之间切换。 在尝试了一些方案过后, 最后找到了一个比较舒服的解法 ———— 把笔记本配置成Linux Server, Windows PC作为FrontEnd

2 安装操作系统

操作系统是Linux, 选择什么Linux发行版需要再讨论一下。

选择Debian Testing 根据我以往的使用经验,开发机长期使用的几个问题:

  • 过于高频的折腾。 比如配置开发环境, 结果导致系统挂逼,被迫重装。
  • 系统软件版本过低,但升级系统又升级不上去

考虑上面的问题,开发机最好安装是Debian Testinghttps://wiki.debian.org/DebianTesting)。 不同ubuntu 20.04这样的固定版本。 debian testing是rolling update的,不会说出现系统软件版本过低的情况。

但是使用Rolling update会导致的折腾的频率更高了,因此还需要: image.png 我的选择是把Debian变成一个CoreOS来使用 ———— 也就Debian作为Host System, 只做网络配置,容器运行,文件系统管理这些工作。 至于开发环境的配置,全部放到Docker容器里来。

下载安装Debian Testing MacBook所需要的驱动大部分都已经集成到MainLinux Linux Kernel, 因此无需按照那些历史文章去安装Custom Kernel/Driver, 只需要只做一个Debian安装盘即可。 如何制作安装盘请看链接: https://wiki.debian.org/DebianInstall 制作完后,插入Macbook,按住Option启动进入USB。 1703339958071.png 按照Debian安装页面走完安装过程 1703339944393.png

3 配置笔记本

连接网络 在笔记本上通过Gui的NetworkManager连接网络,设置自动连接。 连接好了在UI上配置连接, 记得把连接方式从DHCP改为固定IP打开ssh 执行命令sudo apt install openssh-server* 把目录通过NFS导出 执行命令sudo apt install nfs-kernel-server*, 修改脚本/date/exports, 把/home目录export出来。 其他 其他还可以做一些增加可维护性的操作,比如自动更新APT,比如自动重启。

4 配置开发Docker

选什么开发Docker 我个人选用的是ubuntu vnc docker(https://github.com/HarGit14/dorowu-docker-ubuntu-vnc-desktop) , 理由如下:

  • 比较习惯Ubuntu的使用
  • 远程GUI无法使用(其实还有远程X11,但是兼容性差和配置麻烦), 个别需要UI的场景必须要有解决方案。

有VNC就可以通过浏览器登录远程开发机的桌面, 效果如下: 1703340553008.png 运行Docker 首先要在开发机器上安装Docker环境,sudo apt install docker.io*

然后输入如下命令运行Docker。 命令的含义是Docker容器使用宿主机的网络(也就是Docker容器里的端口外部都可以直接访问,减少映射配置成本); 自动重启; root权限; 把外部目录挂载到宿主机。

sudo docker run  --network host  --restart=always --privileged   -v /dev/shm:/dev/shm -v /home:/home -v /:/mnt/home dorowu/ubuntu-desktop-lxde-vnc

运行直接,访问开发机的IP, 比如说http://192.168.2.103/, 就可以看到桌面了。

5 配置Windows PC

配置SSH Client 这里我强烈推荐一个Terminal: https://tabby.sh/ 是我目前用下来,体验最好的一个多系统共用的Terminal了。还可以通过Github在机器里同步配置。 安装VScode并配置Remote模式 参考文档:** **https://code.visualstudio.com/docs/remote/ssh** **Windows通过NFS挂载远程机目录 参考文档: https://help.aliyun.com/zh/nas/user-guide/mount-a-general-purpose-nfs-file-system-on-a-windows-ecs-instance

6 开发

Now Enjoy Developing with Windows Frontend/Linux Backend~ 9d45898c3ab4231ce29173167e4fc97.png