在Surface Pro 4上安装Ubuntu

我已经从Windows 10迁移到Ubuntu 16.04。我尝试了this articlethis video,但是由于最新的内核版本是4.6.3,我仍然遇到问题。
我仍然在使用Ubuntu预装的内核版本4.4.0。
简而言之,我的键盘、触摸板、触摸屏、音量和电源按钮、笔、Wi-Fi指示灯(右上角)和相机都无法工作。
我已成功使Wi-Fi和蓝牙正常工作。
有人能帮我编写/寻找一些补丁并重新编译内核吗?
请在我的GitHub组织上发布所有更新和问题,并且非常感谢任何贡献。 deriver-configModules 要使触控键盖正常工作,请从deriver-config运行SP4-1脚本。

任何帮助都会非常棒,也会非常感激。我遇到了完全相同的问题。触摸屏不工作,Surface Pro笔和鼠标触控板手势也不起作用。@Amir 如果你找到解决办法,请在这里告诉我。 - Tomasito665
Ubuntu 17.04中的内核是4.10版本,并包括对Microsoft Surface的额外支持。 - James
我已经升级到17.04版本,缩放效果很糟糕,触摸板手势也消失了。 - Amir
6个回答

我在我的Ubuntu安装上运行着一个相当不错的Surface Pro 4内核。
总结如下:
可以正常工作的功能有:
- wifi/蓝牙 - 多点触控 - 笔 - 键盘盖上的触摸板
部分可用的功能有:
- 休眠 - 恢复后没有触摸或笔功能
无法正常工作的功能有:
- 挂起(请参阅下面关于节能的说明) - 冻结(更耗电的挂起/睡眠版本,不可靠) - 键盘盖
我尚未尝试的功能有:
- 摄像头

总体思路

这个内核的总体思路是将Hyungwoo Yang在https://github.com/ipts-linux-org/ipts-linux-new/wiki上所做的更改应用到Ubuntu 4.9rc3内核中。 以下是获取内核的步骤。使用Surface 4的所有核心进行编译过程大约需要45分钟。克隆内核存储库需要大约1.5GB的磁盘空间。


生产内核的步骤

安装Ubuntu 16.10 yakkety。为了完成这个任务,你需要一个能同时连接Ubuntu live-USB和键盘/鼠标的USB集线器。
使用USB键盘启动Linux。
准备Ubuntu 4.9rc3内核。 克隆Ubuntu 4.9rc3内核(需要约1.5GB的空间): git clone git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v4.9-rc3 下载6个补丁:Patch1 Patch2 Patch3 Patch4 Patch5 Patch6 按顺序将补丁应用到内核中:对于每个补丁,执行以下命令: git am /path/to/THEPATCH.patch
创建一个从ipts-linux-new内核中支持触摸/笔的补丁。 在另一个目录中克隆内核(需要约1.5GB的空间): git clone https://github.com/ipts-linux-org/ipts-linux-new.git 创建补丁: git diff 0c183d92b20b5c84ca655b45ef57b3318b83eb9e > /path/to/ipts-linux-new_patch.txt
将ipts-linux-new补丁应用到v4.9rc3: cd /path/to/v4.9rc3 patch -p1 < /path/to/ipts-linux-new_patch.txt git add . git commit -m 'Patch for Surface Pro 4 taken from ipts-linux-new.'
编译内核并制作Ubuntu .deb软件包(从Ubuntu Kernel Compilation复制): cd /path/to/v4.9rc3 初始化Debian文件: fakeroot debian/rules clean 配置要构建的内核: fakeroot debian/rules editconfigs 只对amd64问题回答yes。这将显示“menuconfig”界面。激活以下两个选项: Device Drivers -> NVM express lock device (y) Device Drivers -> Misc devices -> Intel Precise Touch & Stylus (m) 在"/path/to/v4.9rc3/debian.master/rules.d/amd64.mk"中注释或删除"do_zfs = true" 通过编辑"/path/to/v4.9rc3/debian.master/changelog"来重命名内核
编译内核(使用比处理器更多的线程可以加快速度): fakeroot debian/rules clean #必需,但我不知道为什么 DEB_BUILD_OPTIONS=parallel=5 fakeroot debian/rules binary-headers binary-generic binary-perarch
应该在v4.9rc3旁边的目录中创建四个新的.deb文件。 使用以下命令安装.debs: sudo dpkg -i linux-image-* linux-headers-4.9.0-040900rc3*
从Windows复制驱动程序文件到Linux: 将驱动程序文件从"\Windows\INF\PreciseTouch\Intel"复制到Linux目录"/lib/firmware/intel/ipts"。至少应该有4个文件,类似于以下名称: iaPreciseTouchDescriptor.bin SurfaceTouchServicingSFTConfigMSHW0078.bin SurfaceTouchServicingDescriptorMSHW0078.bin SurfaceTouchServicingKernelSKLMSHW0078.bin
为这些文件创建符号链接: cd /lib/firmware/intel/ipts ln -s iaPreciseTouchDescriptor.bin intel_desc.bin ln -s SurfaceTouchServicingSFTConfigMSHW0078.bin config.bin ln -s SurfaceTouchServicingDescriptorMSHW0078.bin vendor_desc.bin ln -s SurfaceTouchServicingKernelSKLMSHW0078.bin vendor_kernel.bin
你现在应该能够启动新的内核了。如果链接放置正确,触摸和笔会很好用。

关于节能的注意事项

缺少的暂停功能是一个重大的缺点。 这是由于微软的“连接待机”风波引起的:https://lwn.net/Articles/580451/。 冻结会消耗更多电池(电池的消耗速度可能只有保持计算机开启状态时的一半),而且似乎不太可靠。 使用休眠可以成功保持状态,但不幸的是,在恢复后无法正常使用触摸和笔功能。


如果我能弄清楚,我会将内核添加到PPA中。 - krumpelstiltskin
@Amir:你把仓库命名为Ububtu而不是Ubuntu的原因是什么? - krumpelstiltskin
我相信这是一个打字错误,现在已经修复了!GitHub 仓库 - Amir
我刚买了一个不兼容这个内核的TypeCover。偶然发现了一个已经编译好的内核,其中一切都正常工作。请参考答案:http://askubuntu.com/a/888596/14747 - krumpelstiltskin

我使用了Reddit上的这个指南

我的电脑遇到了冰箱牛的内核冻结问题,无法正常重新启动或关闭,只会在Ubuntu标志下冻结。

我使用了cantenna的(6a和7a),除了无法从睡眠中唤醒和音量按钮不起作用外,其他都很好。

下载此文件(修补过的内核)

cd到它所在的目录(例如cd Downloads),然后安装软件包

sudo dpkg -i './linux-headers-4.4.0-rc8touchkernel+_1_amd64.deb'
sudo dpkg -i './linux-image-4.4.0-rc8touchkernel+_1_amd64.deb'

挂载你的Windows分区(如果你删除了Windows分区或找不到它们,可以从这里下载文件),然后将文件复制到Ubuntu的根目录(根据Windows分区的挂载点可能需要调整路径)。
sudo mkdir /itouch
cp /media/$USER/Windows/Windows/INF/PreciseTouch/Intel/* /itouch

现在创建文件的符号链接,以便驱动程序能够找到它们。
sudo ln -sf /itouch/SurfaceTouchServicingKernelSKLMSHW0078.bin /itouch/vendor_kernel_skl.bin
sudo ln -sf /itouch/SurfaceTouchServicingSFTConfigMSHW0078.bin /itouch/integ_sft_cfg_skl.bin
sudo ln -sf /itouch/SurfaceTouchServicingDescriptorMSHW0078.bin /itouch/vendor_descriptor.bin
sudo ln -sf /itouch/iaPreciseTouchDescriptor.bin /itouch/integ_descriptor.bin

你需要确保你有选择启动这个内核的选项,或者通过配置GRUB将其设置为默认启动。

非常感谢您对如何改进我的帖子以使其更好地为他人服务的反馈。 - user3518221

在SP4上,触摸算法在GPU上运行,因此传统的驱动程序无法使用。
这是github链接: https://github.com/ipts-linux-org/ipts-linux/wiki 触摸屏幕、Surface Pro笔..
IPTS代表:Intel Precision Touch and Stylus(英特尔精准触控和笔)。
在这个github仓库中,有一个特定的内核与触摸屏驱动程序。
很抱歉选择了一个特定的内核,但补丁必须适用于4.4之后的任何内核。

我一直在努力理解那个代码库,但是我还不够高级,无法做到... - Amir

在以下链接中,有一个为您打包的内核的个人软件包存档(PPA):https://launchpad.net/~tigerite/+archive/ubuntu/kernel

按照“将此PPA添加到您的系统”中的说明进行操作,然后执行指定的apt命令。

最好从Xenial(16.04)开始安装,而不是Yakkety(16.10),因为PPA自五月以来没有进行过更新。


#安装linux-surface内核 sudo apt-add-repository ppa:tigerite/kernel sudo apt-get update sudo apt-get upgrade sudo apt-get install linux-surface从我的github的SP4-1脚本。我在等待4.5版本发布!无论如何感谢 :) - Amir
嗯...我在我的SP4上尝试了一下,结果并不令人惊喜。触摸和笔都无法使用。 - krumpelstiltskin
我记不起说过他们工作了! - Amir

我正在使用 Ubuntu 16.10 在 SP4 上进行键盘/鼠标输入操作,以下是我到达这里的步骤:

  • 使用 USB 集线器加载 Ubuntu 以支持键盘/鼠标

  • 使用sudo apt-get install命令安装以下两个软件包:

  • 安装ukuu(简单!)并更新到最新的 RC 内核(4.10-rc8)。现在它支持磁性 SP4 键盘/鼠标(感谢内核开发人员!)。唯一的小问题是无线网络,所以去谷歌搜索并修补。

  • 使用grub-customizer选择 Win10/Ubuntu/Mint。

Ubuntu 可以正常工作,我选择了 16.10 版本(yakkety),因为我不喜欢 16.04 版本(xenial)在屏幕 UL 处的最小化/最大化/关闭按钮,并且从未找到解决此问题的简单方法。

Linux MINT 同样可以启动,并且支持键盘(在将内核升级到 4.10-rc8 版本之后),但不支持触摸板上的鼠标。


16.04是Xenial,而不是Zenity。 - Elder Geek
请确认一下,执行以下命令是否能解决你遇到的无线网络问题:git clone git://git.marvell.com/mwifiex-firmware.git mkdir -p /lib/firmware/mrvl/ sudo cp mwifiex-firmware/mrvl/* /lib/firmware/mrvl/ - Amir
阿米尔,成功了!我不得不将你的命令分成三个部分并逐个运行(否则会出错),然后重新启动,并进行了一些额外的“apt-get update \ apt-get upgrade \ apt-get dist-upgrade”(直到没有更多的更新/升级),再次重新启动,现在我正在酒店的无线网络中回复。真心感谢! - user258424
两个附加项:- 能够将Cinnamon添加到Gnome 16.1(它可以正常工作),并使用ukuu升级到内核4.10(不是rc版本)(参见上文)。一切都是彩虹、独角兽和蝴蝶<G>。 - user258424
这个安装可以使用触控笔吗?休眠、挂起或冻结功能可用吗? - krumpelstiltskin

我找到了迄今为止最好的内核。它使用了与我的其他帖子描述相同的补丁集,以及其他使触摸键盘和多点触控在触摸板上正常工作的补丁。我已经在我的16.10安装中运行它。
这个内核对用户来说需要很少的工作,因为它已经编译成了可以下载的.deb软件包。
以下是支持的功能:
- 触摸 - 笔 - WiFi - 键盘 - 触摸板 - 物理音量按钮和键盘快捷键
以下是不支持的功能:
- 睡眠 - 偶尔会有一些错误
我没有必要抄袭说明,因为它们是动态的并且写得很好。

https://www.reddit.com/r/SurfaceLinux/comments/4t64zt/getting_the_sp4_running_with_ubuntu_1604/


@Amir:这是一个非常简单的安装漂亮内核的方法! - krumpelstiltskin