喵の窝

ThinkPad X1 Extreme 搭建 ubuntu 后台开发环境

零 硬件兼容性

ubuntu 对 ThinkPad X1 Extreme 的兼容性还是比较好的,目前只遇到两个问题。

  1. 指纹识别没法用
  2. 有些程序不支持 4k 高分辨率屏幕

指纹识别目前是无解的,因为没有对应的驱动。4k 屏的问题,最好的解决方案就是入手 1080P 分辨率的 X1E。然而对于像小猫这种,公司强行发放顶配版 X1E 的用户来说,就只能把分辨率降低到 1920 × 1080。虽然效果谈不上完美,但是也算是可以接受。

壹 系统安装前的准备工作

虽然 ubuntu 对 X1E 的兼容性相当好,但是在安装之前还是需要做一些准备工作的。不然在安装过程中可能出现一些玄学问题。

  1. 备份重要文件
    这个不多解释。小心驶得万年船。
  2. 更新 bios
    在安装 ubuntu 前,一定要把 bios 更新到最新版本,否则你可能连 Xorg 都启动不起来。小猫写这篇文章的时候, bios 的最新版本为 1.19。更新过程本身不复杂也没什么危险性。只要别遇到更新过程中突然掉电,然后电池刚好没电的情况就行。退一万步说,就算由于各种玄学问题,bios 更新失败了,你也进不去系统了。不还有 ThinkPad 的专享保修服务吗?总之,刷 bios 就放心的刷吧,不要有什么心里负担。

叁 正式安装

小猫选择的是 ubuntu 18.04 版本。一来这个版本不像 18.10 这么新,二来这是个 lts 版本,也不会太快停止支持。安装过程没什么可说的,无脑下一步就行了。分区的时候,如果不知道怎么分就全盘 ubuntu 吧。

肆 驱动安装

如果你能顺利地进入系统,那么大部分硬件应该都可以正常工作。除了显卡和指纹识别,指纹识别上面已经说过,目前无解。下面重点说说显卡驱动怎么装。注意事项:千万不要安装 bumblebee

  1. 添加 nvidia 驱动的软件源
    不做这一步也可以,无非就是没法装最新驱动而已。执行以下命令

    1
    2
    $ sudo add-apt-repository ppa:graphics-drivers/ppa
    $ sudo apt update
  2. 安装驱动
    执行以下命令

    1
    $ sudo ubuntu-drivers autoinstall
  3. 等待安装完成

伍 图形化开发环境搭建

小猫强烈建议把开发环境分为读代码环境和编译环境。因为真实服务器的环境很有可能跟 ubuntu 的环境有区别,所以导致在 ubuntu 下能正常编译,运行的代码在生产测试环境中跑不起来。因此隔离阅读代码环境和编译环境相当重要。

  • 阅读代码环境

对于阅读代码环境而言,我们主要需要的是代码高亮,自动补全,跳转功能。在对比了很多工具以后,小猫觉得 vscode 用得最顺手,因此下面说说 vscode 的配置。

装好 vscode 以后,需要手动安装插件。小猫推荐的插件有

  1. C/C++: 必装,不解释
  2. CMake 以及 CMakeTools: 推荐,可以快速创建 CMake 工程,并且根据 CMakeLists.txt 文件提供补全功能。写本地 Demo 的时候会用到
  3. CodeLLDB: 可选,用 lldb debug,比 C/C++ 插件自带的 debugger 稍微好用一点,大部分时候用不到,调试本地 demo 的时候可以试试
  4. Git History,GitLens 可选,增强了 vscode 自身的 Git 功能
  5. Bracket Pair Colorizer 2 可选,用不同颜色显示匹配的括号
  6. Vim 可选,需要的人自然会装
  7. BookMarks 可选,代码收藏夹,可以将某个文件的某一行加入收藏夹,需要的时候再拿出来看。大工程会比较好用
  8. sftp 可选,同步本地工程目录和远程服务器工程目录
  9. Settings Sync 可选,用于备份和还原 vscode 中已安装的插件和设置

除此之外,还可以根据自己的喜好,选一个配色方案和图标主题。至于插件的使用方式,直接看插件的文档就好。这里需要特别说明的是 C/C++ 插件可以自动搜索和读取工程目录中的 compile_commands.json 文件以提供更加准确的补全和跳转。所以如果你的编译系统支持生成这个文件的话,请一定要生成这个文件。

  • 编译环境

这里又分两种情况

  1. 你有一台稳定的构建机

这个时候,你可以使用 sftp 插件,让你的本地工程目录跟构建机的工程目录保持一致,这样本地修改以后直接到构建机上构建就可以了。

  1. 构建机是啥?

这个时候,你就需要本地的构建环境了。小猫强烈推荐使用 docker 来搭建构建环境,然后把宿主机的工作目录映射到 docker 容器内部。最后在 docker 中编译。这样既不会把宿主机的环境搞坏,使用起来也不会有太多的负担(相对于虚拟机)。

至此,开发环境全部搭建完成。最后,我仍要用嘶哑的声音喊出:ThinkPad 天下第一!!!!

后记:
在很多人眼里 ThinkPad 系列是一无是处的,价格高,配置低,外观丑陋,各种沾指纹等等等等。不过在小猫眼里,这些问题都不是问题。ThinkPad 作为商务电脑的标杆(之一),注重的是可靠性,注重的是在任何情况下,打开电脑就能高效干活。所以,ThinkPad 不会像苹果一样为了追求机身的极致轻薄而牺牲键盘的手感。也不会像苹果一样为了创新而去掉 f1-f12 功能键。更不会像苹果一样在机身接口上做妥协。而就是这种坚持,让小猫在仅仅用了 ThinkPad 两周以后就对 ThinkPad 爱不释手,并且对苹果平台没有一丝的留恋。要知道,在这之前,小猫可是用了 5 年的 macOS 啊。