标签 嵌入式 下的文章

本文主要聚焦在如何使用 Yocto 在 Ubuntu 上创建一个最小化的 Linux 发行版。Yocto 项目在嵌入式 Linux 的世界非常著名,这是因为它用起来非常灵活、方便。Yocto 的目标是为嵌入式软硬件开发商创建自己的 Linux 发行版。本文我们将会创建一个可以运行在 QEMU 上的最小化的 Linux,并且在 QEMU 上实际运行。

开发机的基本条件

  • 最少 4-6 GB 内存
  • 最新版的 Ubuntu 系统(本文使用了 16.04 LTS)
  • 磁盘剩余空间至少 60-80 GB
  • 在创建 Linux 发行版之前先安装下面的软件包
  • 下载最新的 Yocto(Poky 是其最小开发环境)稳定分支
apt-get update
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop

Install prerequisites for Yocto

如下所示,开发环境要安装的软件包将近 1GB 大小。

Install the development packages

在这个教程中,系统上克隆的是 poky 的 morty 稳定分支。

 git clone -b morty git://git.yoctoproject.org/poky.git

install poky

进入 poky 目录,然后运行下面的命令为 Yocto 开发环境设置(设置/导出)一些环境变量。

source oe-init-build-env

如下所示,在运行了 open embedded (oe) 的构建环境脚本之后,终端里的路径会自动切换到 build 目录,以便进行之后行发行版的的配置和构建。

Prepare OE build environment

上面的截屏展示了在 conf 目录下创建的文件 local.conf。这是 Yocto 用来设置目标机器细节和 SDK 的目标架构的配置文件。

如下所示,这里设置的目标机器是 qemux86-64

Set the target machine type

如下面截图所示,在 local.conf 中取消下面参数的注释符号。

DL_DIR ?= "${TOPDIR}/downloads"

Configure local.conf file

SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

Set SSTATE_DIR

TMPDIR ?= "${TOPDIR}/tmp"

Set TMPDIR

PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"

Set PACKAGE_CLASSES and SDKMACHINE

如下所示,在 local.conf 中为基于 Yocto 的 Linux 设置空密码和后续的一些参数。否则的话用户就不能登录进新的发行版。

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

Set debug-tweaks option

我们并不准备使用任何图形化工具来创建 Linux OS,比如 toasterhob 已经不再支持了)。

Yocto 编译构建过程

现在运行下面的 bitbake 工具命令开始为选定的目标机器下载和编译软件包。

bitbake core-image-minimal

Start bitbake

非常重要的是要在普通 Linux 用户下运行上面的命令,而不是使用 root 用户。如下面截图所示,当你在 root 用户下运行 bitbake 命令会产生下面所示的错误。

Do not run bitbake as root

再一次运行导出环境变量的脚本(oe-init-build-env),重新执行相同的命令来启动下载和编译过程。

rerun commands

如下所示,构建脚本组件的第一步工作是解析配置(recipe)。

Parse the build recipes

下面的截图展示了构建脚本的解析过程。同时也显示了用来构建你的新的基于 yocto 的发行版的构建系统的细节。

Building proceeds

在下载了 SDK 和必要的库之后,下一步工作是下载并编译软件包。如下截图展示了为构建新发行版而执行的任务。这一步将会执行 2-3 小时,因为首先要下载需要的软件包,然后还要为新的 Linux 发行版编译这些软件包。

Compilation will take several hours

下面的截图表明了任务列表执行完毕。

Compilation

为目标机器类型 qemux86-64 编译好的新镜像位于 build/tmp/deploy/images/qemux86-64

Build complete

如下所示,上面的命令如果运行在 Putty 上会产生一个错误。

command error in putty

通过 rdp 在 Ubuntu 平台上再次运行上面的命令。

Command works fine in rdp

为运行新的基于 Yocto 的 Linux 发行版的 qemu 打开一个新屏幕。

Open Quemu emulator

下面展示了新发行版的登录界面,同时也显示了使用的 yocto 项目的版本号。默认的用户名是 root ,密码为空。

Linux distribution started

最后使用 root 用户名和空密码登录新发行版。如下截图所示,在这个最小版本的 Linux 上运行了基本的命令(dataifconfiguname)。

Test the Linux distribution

本文的目标是理解使用 Yocto 创建新的 Linux 发行版的过程。


via: https://www.howtoforge.com/tutorial/how-to-create-your-own-linux-distribution-with-yocto-on-ubuntu/

作者:Ahmad 译者:Ezio 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

 title=

Pengutronix 内核黑客 Jan Lübbe 总结了嵌入式 Linux 中正在不断增长的安全威胁,并在这次欧洲嵌入式 Linux 会议上概述了一个计划,以保持长期设备的安全和功能完整。 Linux 基金会

安全漏洞只发生在 Windows 上的好日子正在快速过去。恶意软件黑客和拒绝服务老手们正在越来越多地瞄准过时的嵌入式 Linux 设备,因此在 10 月的 欧洲嵌入式 Linux 会议 Embedded Linux Conference Europe (ELCE)上的几个演讲的主题就与修复 Linux 安全漏洞相关。

最值得去听的讲演之一是 Pengutronix 内核黑客 Jan Lübbe 的《长期维护或管理(或免管理)嵌入式系统 10 年以上》。在总结嵌入式 Linux 中不断增长的安全威胁后,Lübbe 制定了一项计划,以确保长期设备的安全和功能完整。 Lübbe 说:“我们需要迁移到更新、更稳定的内核,并进行持续维护以修复关键漏洞。我们需要做上游更新和自动化流程,并建立一个可持续的工作流程。我们没有理由让系统中仍留有过时的软件。”

随着 Linux 设备变得越来越老,传统的生命周期过程已经不再适用。 Lübbe 说:“通常,你会从 SoC 供应商或主线上获取内核、构建系统,并添加到用户空间。你可以定制和添加程序,并做一些测试。但是,在此之后有 15 年的维护阶段,你最好期望平台不会发生变化、不会想要添加新的功能、不需要实施管理调整。”

所有这些变化,越来越多地导致你的系统暴露出新的错误,并需要大量更新以才能与上游软件保持同步。 Lübbe 说:“在内核中发生导致问题的错误并不总是无意的”。对于去年在 Allwinner 内核中发现的后门,他又补充说:“这些供应商的内核从来不会执行主线内核社区的审查流程”。

Lübbe 继续说:“你不能认为你的供应商一直没问题。也许只有一两个工程师查看过后门代码这块。如果补丁发布在 Linux 内核邮件列表上,就不会有这种事,因为总会有人注意到。硬件供应商不关心安全或维护,也许你会在一两年后得到更新,但是即使这样,他们从一个固定版本开始开发,到他们发布稳定的版本通常需要几年的时间。如果你在这个基础上再开始开发,可能又过了半年,这就更过时了。”

越来越多的嵌入式开发人员在 长期稳定 Long Term Stable (LTS)内核上构建长期产品。但这并不意味着没事了。Lübbe 说:“一个产品发布后,人们经常不再遵循稳定的发行链,也不再应用安全补丁。这样你会得到两个最糟糕的结果:过时的内核和没有安全性。你失去了多人测试的好处。”

Lübbe 指出,使用像 Red Hat 这样的面向服务器的发行版的 Pengutronix 客户经常由于快速的定制、需要系统管理员干预的部署和升级系统而遇到问题。

“更新对一些东西有用,特别是在 x86 上,但每个项目基本上是自己建立基础设施来更新到新版本。”

许多开发人员选择把向后移植作为更新长期产品的解决方案。Lübbe 说:“开始时很容易,但是一旦你不处于项目的维护范围,他们就不会告诉你所使用的版本是否受到一个 bug 的影响,因此很难判断一个修复是否相关。于是你不停打补丁和更新,而 bug 也在不断累积,而这些你必须自己维护,因为其他人不使用这些补丁。使用开源软件的好处就丢失了。”

跟随上游项目

Lübbe 认为,最好的解决方案是跟踪由上游项目维护的版本。“我们主要关注基于主线内核的开发,所以我们在产品和主流内核及其他上游项目之间尽可能没有差别。长期系统在主线内核上得到很好的支持。大多数不使用 3D 图形的系统只需要很少的补丁。较新的内核版本还有很多新的强化功能,这些可以减少漏洞的影响。

跟随主线发展对许多开发人员来说似乎令人畏惧,但是如果从一开始就这样,然后坚持下去,就会相对容易一些,Lübbe 说:“你需要为系统上做的一切制定流程。你总需要知道什么软件正在运行,这在使用良好的构建系统时会更容易。每个软件版本应定义完整的系统,以便你可以更新相关的一切。如果你不知道那里有什么,你就不能解决它。你也需要一个自动测试和自动部署更新。”

为了“减少更新周期”,Lübbe 建议在开始开发时使用最新的 Linux 内核,并且在进入测试时才转到稳定的内核。之后,他建议每年将系统中的所有软件(包括内核、构建系统、用户空间、glibc 和组件(如 OpenSSL))更新为当年上游项目支持的版本。

Lübbe 说:“得到更新并不意味着你需要部署。如果没有看到安全漏洞,你可以把补丁放在一边,需要时它再用就行。”

最后,Lübbe 建议每个月查看发布公告,并且每周检查 CVE 和主线列表上的安全公告。你只需要问自己“该安全公告是否影响到了你”。他补充说:“如果你的内核足够新,就没有太多的工作。你不会希望通过在新闻中看到你的设备才获得有关你的产品的反馈。”


via: https://www.linux.com/news/event/ELCE/2017/long-term-embedded-linux-maintenance-made-easier

作者:ERIC BROWN 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

随着像 APT 和 Yum 等传统包管理解决方案渐渐老去,并且不适用于嵌入式和 IoT 等 Linux 的大量新兴领域,新一代的基于原子化的 Linux 软件升级方案应运而生。Konsulko Group 的 Matt Porter 在本周的 2016 年欧洲嵌入式 Linux 峰会(LCTT 译注:于 2016 年 10 月 11-13 日在德国柏林召开)为大家对比了这些新技术的不同点。

目前已有多个 Linux 软件商使用增量原子更新方式来传递更可靠的发行版更新,通过二进制差异实现更小体积的更新,假如出现意外状况也运行回退。这些新的发行版升级机制包含了 SWUpdate、Mender、OSTree 和 swupd。但有趣的是,幻灯片之中并没有提及 Ubuntu 的 Snappy。

SWUpdate 一种单/双镜像的模块化升级框架,支持镜像签名、可以使用 Kconfig 来进行配置、能够处理本地或者远程升级等。SWUpdate 简直就是为嵌入式系统设计的。

Mender 则是以无线传输进行升级位目标的升级方案。它是用 Go 编程语言编写的双镜像升级框架。

OSTree 是此次增量原子升级方案演示中最有名气的,它类似于 Git。Fedora 和 RedHat 都有它的身影,甚至 Gnome 的 Flatpak 容器系统也使用了 OSTree。

Swupd 是最后展示的一个升级系统,是由 Intel 的 Clear Linux 发行版率先使用的升级方案。它的代码放在 GitHub,而它的客户端和服务端则由 Clear Linux 托管。Swupd 与 OSTree 相似,但它不必重启就可以启用更新。

而那些在本次柏林召开的欧洲嵌入式 Linux 峰会中没有提及的,你也可以访问 这些 PDF 讲演稿 来了解这些专注于嵌入式 Linux 的软件更新机制。


via: http://phoronix.com/scan.php?page=news_item&px=ELC2016-Software-Updates

作者:Michael Larabel 译者:GHLandy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux的内核开发者和开源领袖Linus Torvalds前一段时间表达了关于Linux桌面和嵌入式设备中Linux的未来的看法。

什么是Linux桌面和嵌入式设备中Linux的未来?这是个值得讨论的问题,不过Linux的创始人和开源巨人Linus Torvalds在最近一届 Linux 基金会 的LinuxCon大会上,在一次对话中表达了一些有趣的观点。

作为敲出第一版Linux内核代码并且在1991年将它们共享在互联网上的家伙,Torvalds毫无疑问是开源软件甚至是所有软件中最著名的开发者,如今他依然活跃在其中。在此期间,Torvalds是许多人和组织中唯一一个引领着Linux发展的个体,它的观点往往能影响着开源社区,而且,作为一个内核开发者的角色赋予了他能决定哪些特点和代码能被放进操作系统内部的强大权利。

所以说,关注Torvalds所说的话是很值得的, "我还是挺想要桌面的。" 他在上月的LinuxCon大会上这样说道 那表明他仍然着眼于作为使PC更加强大的操作系统Linux的未来,尽管十年来Linux桌面市场的份额一直很少,而且大部分围绕Linux的商业活动都去涉及服务器或者安卓手机去了。

但是,Torvalds还说,确保Linux桌面能有个宏伟的未来意味着解决了受阻的 “基础设施问题”,庞大的开源软件生态系统和硬件世界让他充满信心。这不是Linux核心代码本身的问题,而是要让Linux桌面渠道友好,这可能是伟大的Torvalds和他开发同伴们所需要花精力去达到的目标。这取决于app的开发者、硬件制造商和其它有志于实现人们能方便使用基于Linux的计算平台的各方力量。

另一方面,Torvalds也提到了他的憧憬,就是内核开发者们能简化嵌入式装置中的Linux代码——这也许和让Linux内核更加桌面友好化的任务有所分歧。但这也不一定,因为无论如何,Linux都是以模块化设计的,单内核代码库不能同时满足桌面用户和嵌入式开发者的需求,这是没有道理的,因为这取决于他们使用的模块。

作为一个一直想看到更多搭载Linux的嵌入式设备出现的Linux桌面用户,我希望Torvalds的所有愿望都可以实现,到那时我就可以只用Linux来做所有我想做的事情,无论是在电脑桌面上、手机上、车上,或者是任何其它的地方。


via: http://thevarguy.com/open-source-application-software-companies/082514/linus-torvalds-promotes-linux-desktops-and-embedded-compu

作者:Christopher Tozzi 译者:ZTinoZ 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux 有着广泛的用途。该平台用于很多家庭的简单使用,同时它也深受程序员和黑客们的青睐。此外,Linux 还广泛地应用在嵌入式系统中,有一系列专门适用于此类系统的发行版。我们将为大家推荐十个非常优秀的专为嵌入式系统发行的linux版本!

1.Ampro 嵌入式 Linux

这是一个自由和开放源代码的从Ubuntu精简来的轻量级操作系统。

2. BlueCat Linux from Lynx

这个基于 Linux 的发行版是Lynx套件的一部分,并为嵌入式系统打造。

3. CacheGuard OS

CacheGuard OS 是一个从零开始建立的集成了安全解决方案的基于Linux的版本,专门为网络管理设计的。

4. Darma NAS OS

这个发行版有一个基于 SSL 的加密客户端的服务器和基于 Java 的图形用户界面。

5. DIET-PC

这是开源的瘦客户端软件 kitset,它允许用户建立网络应用。

6. ELinOS

这个发行版为在嵌入式系统上工作的用户提供大量的技术。它是一个相当受欢迎的嵌入式 Linux 平台。

7. eLux

这个发行版有一个非常简单和容易使用的界面,适用于用户和管理员都不具有任何有关 Linux 的知识的特殊情况下。

8. eLux NG

这个发行版为支持 eLux 的处理器列表中添加了新的型号。

9. Embedded Coyote Linux

这种基于 Coyote Linux的防火墙和 VPN 服务器一直为很多人选择的平台。

10. 嵌入式 Debian 项目

这个项目的目的是使 Debian GNU/Linux 成为嵌入式系统的第一选择。


via: http://www.efytimes.com/e1/fullnews.asp?edid=137612

译者:owen-carter 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

OpenELEC 4.0.4已经发布,它是一个专门设计运行XBMC的嵌入式系统,一个开放源代码的娱乐媒体中心。它构建 XBMC 13.1 基础之上。

OpenELEC 开发商非常密切地跟着 XBMC 的产品开发周期,目前已经发布了他们的最新的 4.0.4 的版本。它基于 XBMC 13.1 "Gotham",并且开发者们做了一些自己的改动。

“此版本包括一些bug修正、安全修复和来自于 OpenELEC 4.0.3 的改进。除了通常的错误修正和软件包更新,我们已经使用最新的补丁文件升级 XBMC 至最新的 XBMC 13.1 (final)。这个版本包含了在 XBMC 13.0 发布之后的很多已知问题的修复(其中有些我们已包括 OpenELEC 4.0.0中)。”

“我们在popcornmix的帮助下发现并修复了一些和树莓派相关内核问题、 固件和 XBMC 代码中的问题,非常感谢他的帮助 !OpenELEC 4.0.4 现在是一个稳定版本,包含了OpenELEC 4.0系列的bug修正和安全漏洞修复 。”开发商的官方网站上如是写道。

OpenELEC 4.0.4 界面更加美观而且更新和修复了许多问题。例如,e2fsprogs 已更新到版本 1.42.10、 bluez 已更新到版本 5.19、 fontconfig 版本更新到 2.11.1,也默认集成了 systemd 213 和修复了一些安全问题的gnutls 3.2.12,而且使用了一个新的 Linux 内核3.14.5。

此外,DVB T2 已经添加了对 GeniaTech T220 / August T210 设备的支持,由于其驱动程序尚不完善而允许禁用WOL、也添加了尚不完善的"e1000e"驱动,树莓派的支持补丁已更新。

如果你已经有一个旧版的 OpenELEC,你可能需要考虑升级的系统而不是从头开始安装它。如果想顺利地完成安装,至少应该是 3.2 版本。

如果您尝试从旧版本操作系统的更新,您可能发现一些插件和插件都不再工作。所以最明智的办法就是,在尝试升级之前备份你的系统。

以 XBMC 13.1 "Gotham" 版本为基,配有 Android 硬件解码、 许多树莓派和 Android 速度方面的改善,立体 3D 渲染,更好的触摸屏支持,改进了 UPnP 功能,很多的音频引擎的改进,更好地字幕搜索、 对开发者增加的如 Python 和 JSON RPC API等 ,FFmpeg 1.2,还有更多。

查阅官方 公告 的更改和改进的完整列表。

下载最新的 OpenELEC 4.0.4:


via: http://news.softpedia.com/news/OpenELEC-4-0-4-Is-Out-and-Based-on-XBMC-13-1-quot-Gotham-quot-445802.shtml

译者:owen-carter 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出