GPD micropc running Ubuntu

在拿到GPD MicroPC几天后,终于装上了Ubuntu Linux,Server版 18.04 LTS。之前看了一圈消息,GPD早在正式发布MicroPC的前几个月就把工程机发给了几个海外的工程师做开发测试之用,包括就职于Ubuntu的大牛都收到了测试机,并且至少ubuntu的Wimpress确认了GPD雇佣了他请他帮忙搞定ubuntu在GPD上运行,不过从网上公开回应的消息来看,他承认因为micropc的工程机因为硬件设计上的问题不受Linux Kernel支持,所以无能为力。而就职于Redhat的Hans并没有明确表示他是否在进行这项工作,只是在redddit上有传言,基本上如大家所言这个人很关键,TBD,to be determined,如果这个人都搞不定那基本就是没洗了。
看完上面这些消息,我真的很无力啊,尼玛当初GPD可是信誓旦旦地宣布会同时支持windows和linux的啊!
在拿到micropc的两天内我安装了各种linux大的小的邪门的发行版,没有一个可以显示出来,最后很无奈只好又重新在网上慢慢地下载了GPD官方9个多G的windows固件恢复镜像重新安装了windows 10.
客观来讲,windows 10跑在上面还是挺好的,优缺点已经有网友发过帖子讨论我不再赘述了,只是我个人是个linux老用户,真的在日常工作生活中,基本上只有一台打游戏用的机器才安装了windows,windows对我来说只是打游戏比较方便而已,家里单位其他的大大小小机器都是linux和mac,MS在MS用户的手中可以很方便很和谐,但对我这个生活在linux生态中的老用户来说形同鸡肋,如果一定要买windows的GPD产品,那我直接买win2就好了啊,我真的很想随时随地玩巫师三 :smiley:

我想着在windows上装一些linux相关的工具其实也可以退而求其次吧,开启了WSL在微软商店里下载安装了ubuntu和debian子系统,很多奇奇怪怪的问题啊,不是我冤枉微软,简直没办法用,我不记得具体跑过哪些报过什么错了,只是tmux就没办法在上面跑起来,很快就放弃了;然后下载安装了docker desktop for windows,拉了一些简单的容器,到还行,但我的目的是linux环境,docker下的发行版容器包括ubuntu真的只是一个最最最基本的环境,啥也没有你如果真的想用它做一个工作站环境大概从思路上就错了,所以我又放弃了;然后我又下载安装了oracle virtualbox,尼玛,我试了ubuntu server近期各种镜像就是安装会卡住,virtualbox的设置里各种选项我也尝试过没有办法,于是我从一台mac上virtualbox里现有的ubuntu导出了一份拷到micropc上,导入进去再启动,居然提示存在specter漏洞然后就永远卡在了释放内存的提示那里直到永远不开玩笑我就仍在那边看着光标跳了个把小时,这条路我也放弃了;再不济咱们还可以SSH到其他各种服务器上去总也行吧,对不对,也是工作终端而已嘛,但是在windows下蛋疼的就是几乎没有一个令人满意顺手的SSH工具,windows自带的prompt powershell 根本就不用谈了,商店里下的terminus,putty,xshell还有一个我想不起来叫什么了,都有各的优点,但总是需要我点啊点啊这么小的屏幕那么小的图标我手很抖啊,而且我尝试过寻找关闭触摸板点击功能在哪里,没找到,经常会触发双击粘滞或者点击动作,很难受,有一个mobaXterm很强大,但同样的问题,我不想鼠标点来点去的。所以上述种种,作为一个linux运维工程师,可能不是什么正经运维毕竟没在大厂商里干过没见过什么世面,我无法忍受在windows下工作。

既然忍受不了windows,那么我还是不信邪,在ytb上发现了一位老哥在micropc上跑起了linux,于是我请教了老哥几句,老哥很热情地指点了我,我立马触电了一样看到了希望立刻安装好Ubuntu动手下载编译最新的5.0-RC2内核,老哥告诉我要想让micropc正确显示,必须在GRUB启动里设置nomodeset=yes,而要想让这个选项生效,必须是最新的5.0-RC2内核。

我查了一下nomodeset的作用:
The newest kernels have moved the video mode setting into the kernel. So all the programming of the hardware specific clock rates and registers on the video card happen in the kernel rather than in the X driver when the X server starts… This makes it possible to have high resolution nice looking splash (boot) screens and flicker free transitions from boot splash to login screen. Unfortunately, on some cards this doesnt work properly and you end up with a black screen. Adding the nomodeset parameter instructs the kernel to not load video drivers and use BIOS modes instead until X is loaded.

我粗糙地翻译一下就是说 最新的内核把video模式设置移到了内核中,这样一来所有显卡上的硬时钟频率和寄存器都在内核活了的时候就执行了,而不是等到X server启动时才在X驱动中加载。这样造成的结果就是让显示非常高清且很炫的启动画面并且可以灵活平滑过度到登录界面成为可能(尼玛好无聊),然而不幸的是在有些显卡上这种设计不能正确工作会导致黑屏(是啊大哥)。在启动程序中添加nomodeset指令就是让内核在启动时不要急着加载显卡驱动显示什么鸟酷炫的画面而是朴实无华老老实实地用BIOS模式,等到要用了再让X自己去加载显卡驱动。真是尼玛QJ用户的炫酷思路啊!
好吧,理解了nomodeset,那我就立马编译安装新内核完了就禁用了中二的炫酷风设置,然后更新下GRUB设置,欧了!我很难解释到底是哪位大神默默地把最新的内核模块支持提交并入了内核主干还是GPD在正式产品中改正了硬件设计,还是这个设置只是一个投机取巧丧失了一些性能的选择。

总之它就是完美运行linux了!
以太网卡,无线网卡,键盘背光,屏幕亮度调节,声音,电池电量显示,风扇散热,休眠唤醒 全都正常运行。
因为对我来说不喜欢跑图形界面,所以我没有启动x server也没有安装任何GDM,但按照这个理论的话图形应该也都不会有问题的,所以linux用户们可以上了。安装了linux以后,尤其是我装的server版因为不会用到显卡,所以风扇基本上很微弱地在转,出风口和机身都比windows下温度低了很多,电池电力的话刚充满会显示能持续12个小时以上,按我今天周末上午出门去丈母娘家下午又去爸妈家吃晚饭一路没关过机只是不用的时候合上屏幕用了再打开屏幕,期间插着充了个把小时电,一直到现在还坚强地显示能继续跑8个多小时,简直牛逼啊,续航很重要这样我可以有足够的时间一边在外面浪一边随时做事。