1. 安装
https://medium.com/@t1ina2003/surface-pro-4-%E5%AE%89%E8%A3%9D-ubuntu-18-04-%E5%9C%96%E6%96%87%E6%95%99%E5%AD%B8-59e927e2cf6f
- 安装前先给本地磁盘做好分区,或者准备一张tf卡。装在tf卡里更保险,不怕搞坏Windows系统。
- 用rufus做好USB引导盘,ubuntu16/18都可以。插入USB,重启电脑。
- 一般情况下会直接进入GRUB引导。选择 Install Ubuntu 进入安装步骤。注意安装在提前准备好的分区上,绝对不能装在nvme0n上。
*如果直接进入windows,按住shift点击重启,就能进入UEFI设置界面,手动把USB 移到boot顺序中的第一位。重试此步骤。 - 安装完成后,重启。此时应该还是USB引导,这次选择Try Ubuntu without installing,进入USB引导盘中的系统。打开一个终端,一次输入下列指令。
sudo su
cd /media
mkdir windowsefi
mkdir microsdefi
mount /dev/nvme0n1p1 windowsefi
mount /dev/sdb1 microsdefi
cd microsdefi
cp -R ../windowsefi/EFI ./
exit
- 这样,系统引导就设置好啦。重启并拔掉USB,就能正常进入GRUB选择ubuntu或widows。
- 要是什么时候不想用了,在windows中下载一个EasyUEFI,在管理EFI启动项中删除ubuntu。然后再格式化ubuntu所在的磁盘分区就可以了。
2. 驱动更新
https://github.com/jakeday/linux-surface
- ubuntu正确安装后,typecover是能正常使用的,但surface pen,触屏什么的都还不能用,这还怎么体现surface的优越性(手动狗头),下面安装一个大牛提供的linux surface kernel,该kernel解决了绝大部分的驱动问题。
- 首先连接互联网,要更新系统
sudo apt update
sudo apt upgrade
- 然后再输入如下指令
sudo apt install git curl wget sed
git clone --depth 1 https://github.com/jakeday/linux-surface.git ~/linux-surface
cd ~/linux-surface
sudo sh setup.sh
重启即可。我电脑上webcam还是不可用,其他的都能正常工作。
- 如果载入新kernel时显示该内核没有签名。那么就麻烦了,如果不在乎系统安全,可以停用security boot。这里,我选择的是自己创造一个签名。
首先,新建一个文件mokconfigcnf,内容如下
# This definition stops the following lines failing if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3
string_mask = utf8only
prompt = no
[ req_distinguished_name ]
countryName = <YOURcountrycode>
stateOrProvinceName = <YOURstate>
localityName = <YOURcity>
0.organizationName = <YOURorganization>
commonName = Secure Boot Signing Key
emailAddress = <YOURemail>
[ v3 ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment = "OpenSSL Generated Certificate"
注意替换掉自己的相关信息,随意写也可以。
在相同目录下,执行
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-out "MOK.der"
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
sudo mokutil --import MOK.der
此步骤会要求设置一个密码,稍后会用到。
重启电脑,系统进入蓝屏而且分辨率感人,依次选择
Enroll MOK ->View Key (确定显示的是你之前编写的签名内容)->Continue->Yes。进入系统,此时签名还没完成。执行
sudo mokutil --list-enrolled
在 /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface中确定linux-surface的版本号,替换下面的指令
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
sudo update-grub
再次重启,载入linux-surface kernel。
最后收尾,删除未签名的内核
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub
完成。