[连载]Ubuntu 18.04 嵌入式开发环境手把手搭建指南一

 [连载]Ubuntu 18.04 嵌入式开发环境手把手搭建指南一

老wu目前在用Ubuntu 14.04 LTS 版本作为嵌入式开发环境,其开发代号为“Trusty Tahr”,中译名:可靠的塔尔羊,于2014-04-17发行,由于是LTS长期支持版本,Ubuntu官方对Ubuntu 14.04 LTS提供更新支持到2019年4月。几天前,即2018年04月26日,Ubuntu官方宣布了其新一代长期支持版本Ubuntu 18.04 LTS,开发代号“Bionic Beaver”中译名:仿生的海狸。老wu也打算将嵌入式开发环境升级到Ubuntu 18.04 LTS版本。
为什么使用Ubuntu来做嵌入式开发?
Linux桌面发行版本有很多很多,Ubuntu、Fedora、Arch Linux、openSUSE等都是比较知名的Linux桌面发行版本。
那为什么选择Ubuntu?老wu的的回答是,不知道,就是看着顺眼,就像你问我画PCB是选Allegro、PADS、Mentor EE、还是Altium Designer,亦或者,编程语言C、C++、JAVA、C#哪个好一样,都是很牛的东西,凭个人性趣爱好而定吧 ?。
如果你硬要问为什么选Ubuntu?那就是很多嵌入式开发所需的工具链、开发板资料都是基于Ubuntu环境来的,Ubuntu的apt包管理器对于开发编译过程中需要用到的包,都提供了开箱即用的预编译好的二进制安装包,通过apt命令直接安装即可立马能用并自动解决相互的包依赖问题,人生苦短,赚钱要紧,何必在这些基础设施上边折腾?除非你是为极客狂热患者 ?。
据LinuxQuestions.org 组织的调查报告显示,2017 年度最热门 Linux 桌面发行版由 Ubuntu 以 18.17% 的得票率夺冠,排在第二名的是 Linux Mint ,得票率为 18.02% ,Slackware 以 16.79% 排名第三,高于第四名 Debian 的 12.82% 。
为什么Ubuntu如此流行?
Reddit 论坛上有个探讨为什么Ubuntu如此流行的帖子,原贴见链接:https://www.reddit.com/r/linux/comments/63anfu/honest_question_why_is_ubuntu_popular/
“我很想知道为什么 Ubuntu 这么受欢迎。事实上我个人并不觉得 Ubuntu 相比其他 Linux 发行版有什么明显的优势,而且我认为其他发行版在各自的垂直领域也已经做到很专业了:例如 CentOS 和 OpenSUSE 专注于服务器,Arch 和 Gentoo 专注于用户定制,Fedora 专注于办公场景等。
当然,我承认它的确很受欢迎,但原因是什么,是因为 Ubuntu 的社区活跃?还是它容易使用?
求各路大神指点迷津。”
一石激起千层浪,问题一出,立即引发网友们的热烈回应:
用户A:因为它积极向着普通大众靠拢,实际满足了这一类用户的需求,并且广告推广也做得很出色。
用户B:因为它兼容 Debian 系统下的 .deb 软件格式,并且具有比 Debian 更好用的桌面交互。并且它是第一个面向市场的版本。
相比之下,服务器端的 RHEL/CentOS 等系统却很难用。你必须在 rpmfind 之类的网站上手动搜索并安装软件包 ,而不像在 Debian / Ubuntu / Mint 等系统,可以直接通过 Aptitude 工具快速实现软件安装。单纯从技术上讲,.rpm 格式的软件包要优于 .deb 格式,但实际操作起来 .rpm 格式却常常无法做到一致性。这也是为什么在 Debian/Ubuntu 中将软件包导入官方仓库的步骤如此严格。但严格控制也带来了优势,在 Debian/Ubuntu 中你很少遇到 .rpm 格式软件带来的 dll 地狱。
在桌面应用方面,像前面提到的,Ubuntu 兼容了非常好用的 .deb 软件格式,同样提供了非常便捷的桌面交互。例如安装软件时,在 Ubuntu 环境下,你只需要在桌面上点击安装就行了,而其他系统,你常常需要先让其他服务正常运行,然后再安装软件包(这一点无论对新手还是老手来说都是痛苦的)。另外,Fedora 系统与上文提到的 RHEL/CentOS 等具有类似的 .rpm 问题。
其他发行版本,如 Arch/Slack/Gentoo 等是很棒的 Linux 学习环境;而 SUSE 也还是有 .rpm 软件格式问题;虽然它试图通过与 Novell 公司(Netware 系统的开发商)合作实现突破,但进展缓慢,而且太晚了。
用户C:我就不喜欢 Ubuntu,虽然它是我学习 Linux 时安装的第一个发行版,而且它的桌面系统也的确很好用,但它的 Unity 组件在系统全屏时总是出问题,而且还特别占内存,所以我已经不用了。
我现在用 Debian 系统配合 xfce 桌面,个人感觉比 Ubuntu 好多了。
用户D:虽然 RedHat 和 SUSE 系统也打过广告,但是随着功能的提升,实际上它们两个都是要收费的,而且它们更关注于商业场景。另外,不要忘了早期 Ubuntu 的免费邮寄装机 CD 的推广计划,那时建立的口碑也是一种很重要的用户资源。
用户E:当年 Ubuntu 的发布可谓一场 Linux 的革命。实际上 Ubuntu 背后的维护团队在软硬件适配上做了很多工作,他们用实际行动表达了对用户体验的负责。
硬件上,你只需要谷歌搜索一下“Nvidia驱动Linux”等关键词,再把时间节点调整到 10 多年前,你就能发现当年有多少种各不相同的安装 Nvidia Linux 驱动的方法,而且这些方法在不同的 Linux 发行版上的结果各不相同。但 Ubuntu 的驱动安装从来不是问题。
软件上,Ubuntu 将自己的发布日期调整到与 Gnome 桌面的更新日期几乎同步,使其成为流行度最高的桌面系统。
如果你现在刚开始使用 Linux,可能好用的发行版选项有许多。但随着时间的推移,技术的迭代更新,Ubuntu 能始终保持对用户认真负责的态度,因此它赢得了声誉。
用户F:Canonical 公司(Ubuntu背后的开发团队)从一开始就深刻认识到了 Linux 的潜力和用户友好的重要性,在这一点上他们比其他 Linux 发行版做得优秀。而且,Canonical 一直在努力向普通消费者推广 Linux,而不是其他发行版那样仅仅聚焦于专业用户。
用户G:在其他 Linux 发行版几乎不提供“附加驱动”的情况下,Ubuntu 提供了许多用户界面友好的应用程序。另外,其他发行版(如 Debian)往往强迫用户使用 libre 办公套件,但 Ubuntu 对这些专用软件的态度则开放得多。
正是由于 Ubuntu 在上述方面非常贴合用户心理,因此得到了用户的支持。相应地,由于得到了诸多用户的支持,因此开发人员也倾向于适配更多的软件和游戏到 Ubuntu 平台。又因为 Ubuntu 平台的软件和游戏更丰富,进一步地吸引了更多用户加入 Ubuntu。长此以往,形成了良性循环,因此 Ubuntu 也就越来越受欢迎了。
用户H:因为 Ubuntu 非常的简单易用,而且用户的维护成本低廉。事实上,对于绝大多数用户而言,他们只是想要一个能稳定工作的操作系统,而非一个为 Linux 发烧友量身定制的实践平台。从这一点来看,Ubuntu 显然是最好的选择。
确认过眼神之后,老wu觉得Ubuntu确实是个值得信任的嵌入式开发环境。
Ubuntu的LTS 版本每两年发布一次,而 Ubuntu 18.04 是自 2016 年以来的第一个长期支持版本。Ubuntun 长期支持版本可以获得 Canonical 官方长达五年的技术支持,这意味着在 2023 年之前所有用户都可以放心使用 Ubuntu 18.04 LTS。
Ubuntu 18.04 LTS 被 Canonical 创始人 Mark Shuttleworth 命名为「Bionic Beaver,仿生海狸」,这主要是为了纪念 Ubuntu 人孜孜不倦的辛劳工作。所以,以海狸充满活力的态度,勤劳的本性,此次版本更新周期以这种哺乳动物作为吉祥物进行命名。
Ubuntu 18.04的主要新特性:

1. 「最小安装」选项
这是老wu觉得最赞的一个特性,老wu平时主用Mac OS,装Ubuntu只是利用其来交叉编译嵌入式系统及Linux应用或者拿来做Linux Server。之前安装的Ubuntu Desktop默认会预装一些用不到的软件,如:LibreOffice、Thunderbird、Transmission、Rhythmbox等等多达80 项附加功能应用,而这些应用老wu根本不会去用,而这80多个用不到的软件造成系统安装过程费时不说还浪费宝贵的固态硬盘空间。
而Ubuntu 18.04 的安装程序 Ubiquity 上将新增“最小化安装”选项,在安装时,你可以选择是否要安装一个功能齐全的 Ubuntu ,或者是一个简化版本。
“最小化安装”中仅默认包含:桌面环境、Web 浏览器,一些核心系统工具等等,然后我们可以根据自己的实际需要在手动安装必要的组件即可。
2. Linux Kernel 4.15
Ubuntu 18.04 LTS 还将附带了 Linux Kernel 4.15,其中包含针对 Spectre 和 Meltdown 错误的修复程序。
除了 Specter 和 Meltdown 错误修复之外,Linux Kernel 4.15 还为 Raspberry Pi 7 英寸触摸屏提供原生支持,并支持安全加密虚拟化。
3. Xorg显示服务器回归
在过去几年中,Ubuntu 经历了一段艰难的时期,随着其移动版本的退出以及 Unity 的支持结束。 最大的障碍之一是在 Ubuntu 17.10 中默认切换到了 Wayland 显示服务器。 虽然它继续被指定为未来的显示服务器,但因缺少对 Wayland 应用程序的支持,导致不少用户切换回 Xorg 显示服务器。
因此,Ubuntu 18.04 LTS 将 Xorg 恢复为了默认显示服务器。 当然,也可以通过登录屏幕上的齿轮图标切换回 Wayland 。
4. GNOME正式到来
Ubuntu 18.04 LTS 发布的同时也带来了 GNOME 3.28,由于 GNOME 在 Ubuntu 17.10 中已经取代了 Unity,因此 GNOME 也已经成为了 Ubuntu 系统默认的桌面环境。
当然,如果你不喜欢使用 GNOME,其他 Ubuntu 桌面环境也是可用的,如:MATE。
GNOME 正式来到 Ubuntu 18.04 LTS 桌面也标志着新统一风格定制的 GNOME 3.0 桌面在长期支持版本上得到支持,这也是升级到 Ubuntu 18.04 系统一个很好的理由。
老wu主用Mac OS X,虽然Mac OS X是最好的日常应用操作系统,非常的稳定,裸奔毫无后顾之忧,没有恶心的广告全家桶,多媒体应用设计和代码编辑环境异常强大,Unix风格的shell,用起来非常顺手,用了Mac六年时间,都忘记了重装系统这回事,但没办法,对于Windows及Linux,还真的没法完全舍弃不用,Windows下比如一些工业自动化等行业应用软件和SDK都是只有Windows版本的,Ubuntu下对于嵌入式Linux和单片机开发则更友好。
对于Linux,我一般会选择Ubuntu发行版,虽然我也用过CentOS、Fedora、Archlinux、openSUSE等等优秀的发行版,但最终还是锁定于Ubuntu,从桌面版到用于博客的Server版直到嵌入式的Debian及Ubuntu Core。用于搭建嵌入式开发环境的Ubuntu Desktop,我一般会使用Parallels Desktop 创建虚拟机环境来安装,因为我的主系统还是Mac OS X,像办公用的微信、钉钉、Airmail、有道、Ofiice套件、omniGraffle等等都是常开的,然后虚拟机里跑Ubuntu,来回切换很方便,同时性能损失也不大,配个大内存就好了。
由于Ubuntu 18.04相对来说还比较新,Parallels Desktop安装期间还是遇到了些棘手的问题,下边分享一下跳坑过程。
下载 Ubuntu Desktop 18.04 LTS 安装包,到Ubuntu的官网下载安装包:https://www.ubuntu.com/download/desktop/contribute?version=18.04&architecture=amd64
嗯,这里老wu选择64位版本,由于国内有CDN镜像加速,下载还是蛮快的,老wu 300M的电信宽带,几分钟就搞定了。
当然,你也可以通过吴川斌的博客百度网盘的Ubuntu分享下载,我将近几年的LTS版本也一并分享了。
Ubuntu百度网盘下载链接:https://pan.baidu.com/s/1taycrQhWRqL42m_1WM3FnQ 密码:sp3v
将下载到的ISO镜像导入到虚拟机,然后开始安装,安装时建议大家勾选【最小安装】选项,安装过程会快许多。
具体的Ubuntu 18.04 安装过程请看老wu分享的视频:

Ubuntu 18.04 LTS 遇到的第一个坑
Ubuntu 18.04 LTS 遇到的第一个坑就是Parallels Tools 安装失败,Parallels Desktop 虚拟机的Parallels Tools对最新版的Ubuntu的支持总是滞后,从14.04,16.04一直到18.04,总是这种情况。
由于Ubuntu 18.04 LTS的内核版本更新到了4.15,而通过parallels官方论坛上的这篇帖子:https://forum.parallels.com/threads/fail-to-build-kernel-modules-on-linux-kernel-v4-15.343748/,了解到,目前
Parallels Desktop 13.3.0对linux内核只支持到4.14,所以我们得对Ubuntu内核进行降级,先降到4.14,待日后Parallels Desktop更新支持到4.15版本内核后再切换回来。
首先到 http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14/ 下载4.14的预编译安装包,注意区分amd64版本还是i386版本,老wu安装的64位版本,将对应的amd64的deb安装包下载下来,放到一个单独的目录中,我在桌面创建了目录“linux-4.14”,然后下载链接中的

  • linux-headers-4.14.0-041400_4.14.0-041400.201711122031_all.deb
  • linux-headers-4.14.0-041400-generic_4.14.0-041400.201711122031_amd64.deb
  • linux-headers-4.14.0-041400-lowlatency_4.14.0-041400.201711122031_amd64.deb
  • linux-image-4.14.0-041400-generic_4.14.0-041400.201711122031_amd64.deb
  • linux-image-4.14.0-041400-lowlatency_4.14.0-041400.201711122031_amd64.deb

这几个deb安装包下载到linux-4.14目录中。
同时按下键盘“Ctrl+Alt+T”组合键,运行终端程序
输入命令
[php]
cd ~/桌面/linux-4.14
[/php]
进入linux-4.14这个目录,然后输入命令
[php]
sudo dpkg -i *.deb
[/php]
安装目录下的所有deb安装包
安装完毕后,linux kernel 4.14版本就安装到ubuntu系统中了,我们可以通过命令:
[php]
sudo apt-cache search linux-image
[/php]
搜索系统中安装的内核镜像版本,我们可以看到linux-image-4.14.0-041400-generic已经安装成功,但由于默认还是引导的4.15版本的内核,所有我们需要对GRUB2引导程序进行设置。
GRUB 2 是从Ubuntu 9.10版本开始作为Ubuntu系统的默认开机引导程序。在电脑开机时,GRUB 2 将显示菜单等待用户输入或是自动将控制权转移到操作系统内核。
GRUB 2 继承自 GRUB (GRand Unified Bootloader)。它经过了完全的重写以提供更佳的灵活性和效能改进。
如需详细了解GRUB 2可访问Ubuntu WIKI页面https://help.ubuntu.com/community/Grub2 ,中文翻译版见这个链接:http://forum.ubuntu.org.cn/viewtopic.php?t=290405
老wu这里不打算详细讲解GRUB2,我这里仅打算修改GRUB 2的默认引导选项,从4.15内核镜像切换到Parallels Tools目前支持的4.14内核。
修改GRUB2的引导配置文件:/etc/default/grub 编辑相关的选项然后保存,通过命令:
[php]
sudo update-grub
[/php]
使配置生效
其中/etc/default/grub的配置参数改为:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_HIDDEN_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
GRUB_CMDLINE_LINUX=”locale=zh_CN”
我这里的思路是这样的,首先修改GRUB_HIDDEN_TIMEOUT=5,让开机引导的时候显示5秒的倒计时等待,期间可以按下键盘的“Shift”按键进入GRUB2菜单,然后就是
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
让GRUB2保存我们设置的引导菜单项,并默认安装我们最后一次保存的菜单项来引导。
修改好/etc/default/grub后,通过命令:
[php]
sudo update-grub
[/php]
更新引导菜单配置,然后重启Ubuntu系统,会看见倒数五个数,期间按下键盘的“Shift”键,进入GRUB2的引导菜单界面,
选择“Ubuntu 高级选项”-》“Ubuntu,Linux 4.14.0-041400-generic”,回车后Ubuntu就会引导Linux 4.14.0-041400-generic的内核,并且以后GRUB2都会按照这个选项来作为默认引导项。
进入系统后,我们再次编辑/etc/default/grub,将GRUB_HIDDEN_TIMEOUT=5 改为 GRUB_HIDDEN_TIMEOUT=0,不显示等待倒计时,直接引导内核,然后 sudo update-grub更新引导设置。
成功引导Linux 4.14.0-041400-generic的内核后,就可以顺利安装上Parallels Tools了,这样虚拟机下的Ubuntu可以却换到全屏显示,显示分辨率也支持到视网膜屏了,虚拟机下的Ubuntu系统可以很方便访问宿主机下的Mac OS资源,可以直接复制粘贴,方便操作。

吴川斌

吴川斌