早在 Ubuntu 18.04 LTS 正式版发布的时候,就想更新一下系统,体验一下新版本的 Ubuntu。由于原来是使用 Win10 作为常用系统,Ubuntu 16.04 作为开发系统,利用 EasyBCD 进行引导,实现开机选择不同系统。但新版本的 Ubuntu 18.04 却不很好的支持这种方式,当初尝试了很多办法,都没有成功,最后是利用开机进入主板设置通过选择启动硬盘顺序来切换系统。然后在最近一个多月里面,由于一些其他事务的原因,没有太多需要在 Ubuntu 下完成的工作,因此对于这个 Ubuntu 系统启动的问题也就不了了之了。
直到最近,有想法希望将之前做的一个智能家居的原型产品改造,做成一个 IoT 入门科普教程,而由于原来的产品是使用手机蓝牙连接控制的,所以需要在主机上再把程序重写一遍,实现利用 电脑 + 蓝牙
,使用 python 或者 node 语言,来控制这个产品。
这样就涉及到蓝牙编程的问题了。可能看过我前面文章的朋友都直到,我之前买了一个树莓派3B,那个树莓派是自带蓝牙的,经过一番摸索,我也初步搞明白如何使用树莓派的蓝牙去连接蓝牙设备。但是,我原本的设想是写一套给入门者、或者对 IoT 感兴趣的朋友的教程,如果这个教程需要再买一个新的树莓派,再配合我这个产品,才能学习或者研究,这样可能会将很多原本有意愿的朋友挡在门外。于是,我又想了另外一个方法,可以为电脑添加一个蓝牙适配器(有些使用笔记本的朋友甚至可以不用额外添加),然后使用电脑编程、调式即可。
然而,事情总是没有那么顺利,网上能找到的使用电脑蓝牙编程的资料实在很少,一般常用的无非是 PyBluez
,但比较让人抓狂的是,这一款 python 库只支持 python2.7,新版本的好像支持 python3.3,但我的电脑常用的 Python 是 3.6 版本的,经过一番折腾,然后发现 WIndow 对这个库支持不算太好,尝试了很多的办法都没有太轻松的能完成安装配置。
然后又再查资料,看到比较多的资料关于蓝牙编程的都是使用 Bluez
这个库,然而这个库又只支持 Linux 系统,如果不使用树莓派,那么就必然要回到在电脑上使用 Linux 了,于是修复 Ubuntu 18.04 与 Win10 双系统引导启动又被引到日程上了。
使用 Rufus 将 ISO 文件烧录到 U盘上安装
在 WIndow 系统下,我们可以使用 Rufus 工具来将 ISO 文件烧录到 U盘上安装。有一点需要注意的是,再烧录的时候,Partition scheme
选择 MBD
。
剩下的就是将 U盘 置入电脑,进入主板设置,调整启动顺序,主要的是 U盘 不要选择 UEFI 模式。
然后在安装的时候,选择手动分区,分区的时候看清楚磁盘。
以我的配置,我有两块 SSD 硬盘,一块安装 Window 系统,另外一块用于安装 Ubuntu,我的分区配置如下:
- 交换分区 8096M (我的内存是 8GB,一般设置和内存相同就可以)
- /boot分区 800M (网上一些教程是分 200M,但实际使用过程中很大可能会遇到 /boot 分区占满,然后不能更新,参考 Ubuntu Server 默认的 /boot 是 500M,这里可以设置大一些:800M)
- /分区 剩下的容量都分配给 / 根目录
然后按一般流程安装完系统即可,这里有一点值得一提,Ubuntu 18.04 可以设置最小化安装,选择了这个,就没有那些多余的软件,当然,Firefox 还是有的,类似我习惯使用 Chrome 的,可以在安装完成后选择卸载。
GRUB2 修复 (重点部分)
接下来,我们来到重点部分了。在这里,之前使用 Ubuntu 16.04 的做法是,进入 WIndow 系统,利用 EasyBCD 创建一个 Ubuntu 的引导,然后就可以在每次开机,进入 WIndow 之前出现一个 蓝色背景的选择界面,然后选择不同的系统即可。
但是这一招在 Ubuntu 18.04 却不行。设置完成后,如果选择 Ubuntu 的引导,会出现一个 GRUB 的命令行,引导缺失,不能正常启动。这里,我们就需要修复 GRUB 了。
修复 GRUB 方法
① 使用 Ubuntu 安装 U盘,启动试用模式,也就是所谓的 Live 模式
② 打开终端,添加软件源,安装相关工具包
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
③ 根据界面提示修复即可。这里值得注意的是,我在这里直接选择了 建议
选项,修复完成后,开机会先自动进入 Grub2 选择界面,如果选择 WIndow 系统,才会进入 WIndow 界面,与之前只用 EasyBCD 创建引导的方式不一样。我猜测可能是因为自动修复的原因,这个工具把引导写入了安装 WIndow 硬盘的 MRD 中,关于这点,我没有时间再做验证,如果有兴趣的朋友可以尝试研究一下,或者我如果日后有时间,会再补一个说明。
完成上述步骤后,重启系统,我们将看到 GRUB2 的引导选择界面,这里我们可以选择 WIndow 或者 Ubuntu 系统了。
调整 GRUB 引导启动顺序
默认的 GRUB 是最上面是自动启动 Ubuntu,但如果你像我一样,平常使用 WIndow 可能比较多,希望自动启动的是 WIndow 系统,那么可以通过安装 Grub Customizer
来配置。
具体方法如下:
① 安装 Grub Customizer
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
② 执行 grub-customizer,根据界面提示完成配置
sudo grub-customizer
[附加] 解决 Window 与 Ubuntu 时间不同步问题
安装完 Ubuntu 后,你会发现一个问题,进入 Ubuntu 后再进入 Window 系统,会发现 Window 系统的时间会被修改了。我们可以通过安装 ntpdate
来解决这个问题。
sudo apt-get install ntpdate
sudo hwclock --localtime --systohc