蚊章汇 - Alessio Ciregia
type: channel
link: https://linuxcn.bwsl.wang/author/829/
description: Alessio Ciregia
items: 如何使用 Fedora IoT 点亮 LED 灯
items: 为你的 Fedora 系统增添发音功能

如何使用 Fedora IoT 点亮 LED 灯
type: item
date: 2018-12-25T08:24:54+08:00
description: 如果你喜欢 Fedora、容器，而且有一块树莓派，那么这三者结合操控 LED 会怎么样？本文介绍的是 Fedora IoT，将展示如何在树莓派上安装预览镜像。还将学习如何与 GPIO 交互以点亮 LED。什么是 Fedora IoT?Fedora IoT 是当前 Fedora 项目的目标之一，计划成为一个完整的 Fedora 版本。Fedora IoT 将是一个在 ARM（目前仅限 aarch64）设备上（例如树莓派），以及 x86\_64 架构上运行的系统。Fedora IoT 基于 OSTree 开发，就像 Fedora Silverblue 和以往的 Atomic Host。下载和安装 Fedora IoT官方 Fedora IoT 镜像将和 Fedora 29 一起发布。但是在此期间你可以下载 基于 Fedora 28 的镜像 来进行这个实验。（LCTT 译注：截止至本译文发布，Fedora 29 已经发布了，但是 IoT 版本并未随同发布，或许会在 Fedora 30 一同发布？）你有两种方法来安装这个系统：要么使用 dd 命令烧录 SD 卡，或者使用 fedora-arm-installer 工具。Fedora 的 Wiki 里面提供了为 IoT 设置物理设备 的更多信息。另外，你可能需要调整第三个分区的大小。把 SD 卡插入到设备后，你需要创建一个用户来完成安装。这个步骤需要串行连接或一个 HDMI 显示器和键盘来与设备进行交互。当系统安装完成后，下一步就是要设置网络连接。使用你刚才创建的用户登录系统，可以使用下列方式之一完成网络连接设置：如果你需要手动配置你的网络，可能需要执行类似如下命令，需要保证设置正确的网络地址：$ nmcli connection add con-name cable ipv4.addresses \ 192.168.0.10/24 ipv4.gateway 192.168.0.1 \ connection.autoconnect true ipv4.dns "8.8.8.8,1.1.1.1" \ type ethernet ifname eth0 ipv4.method manual如果你网络上运行着 DHCP 服务，可能需要类似如下命令：$ nmcli con add type ethernet con-name cable ifname eth0Fedora 中的 GPIO 接口许多关于 Linux 上 GPIO 的教程都关注传统的 GPIO sysfis 接口。这个接口已经不推荐使用了，并且上游 Linux 内核社区由于安全和其他问题的缘故打算完全删除它。Fedora 已经不将这个传统的接口编译到内核了，因此在系统上没有 /sys/class/gpio 这个文件。此教程使用一个上游内核提供的一个新的字符设备 /dev/gpiochipN 。这是目前和 GPIO 交互的方式。为了和这个新设备进行交互，你需要使用一个库和一系列命令行界面的工具。常用的命令行工具比如说 echo 和 cat 在此设备上无法正常工作。你可以通过安装 libgpiod-utils 包来安装命令行界面工具。python3-libgpiod 包提供了相应的 Python 库。使用 Podman 来创建一个容器Podman 是一个容器运行环境，其命令行界面类似于 Docker。Podman 的一大优势是它不会在后台运行任何守护进程。这对于资源有限的设备尤其有用。Podman 还允许您使用 systemd 单元文件启动容器化服务。此外，它还有许多其他功能。我们使用如下两步来创建一个容器：创建包含所需包的分层镜像。使用分层镜像创建一个新容器。首先创建一个 Dockerfile 文件，内容如下。这些内容告诉 Podman 基于可使用的最新 Fedora 镜像来构建我们的分层镜像。然后就是更新系统和安装一些软件包：FROM fedora:latest RUN dnf -y update RUN dnf -y install libgpiod-utils python3-libgpiod这样你就完成了镜像的生成前的配置工作，这个镜像基于最新的 Fedora，而且包含了和 GPIO 交互的软件包。现在你就可以运行如下命令来构建你的基本镜像了：$ sudo podman build --tag fedora:gpiobase -f ./Dockerfile你已经成功创建了你的自定义镜像。这样以后你就可以不用每次都重新搭建环境了，而是基于你创建的镜像来完成工作。使用 Podman 完成工作为了确认当前的镜像是否就绪，可以运行如下命令：$ sudo podman images REPOSITORY TAG IMAGE ID CRE…

为你的 Fedora 系统增添发音功能
type: item
date: 2018-01-05T05:16:00+08:00
description: Fedora 工作站默认带有一个小软件，叫做 espeak。它是一个声音合成器 —— 也就是转换文本为声音的软件。在当今这个世界，发音设备已经非常普遍了。在智能电话、Amazon Alexa，甚至火车站的公告栏中都有声音合成器。而且，现在合成声音已经跟人类的声音很类似了。我们生活在 80bandaid 的科幻电影里！与前面提到的这些工具相比，espeak 的发音听起来有一点原始。但最终 espeak 可以产生不错的发音效果。而且不管你觉得它有没有用，至少它可以给你带来一些乐趣。运行 espeak你可以在命令行为 espeak 设置各种参数。包括：振幅（-a）音高调整 （-p）读句子的速度 （-s）单词间的停顿时间 （-g）每个选项都能产生不同的效果，你可以通过调整它们来让发音更加清晰。你也可以通过命令行选项来选择不同的变音。比如，-ven+m3 表示另一种英式男音，而 -ven+f1 表示英式女音。你也可以尝试其他语言的发音。运行下面命令可以查看支持的语言列表：espeak --voices 要注意，很多非英语的语言发音现在还处于实验阶段。若要创建相应的 WAV 文件而不是真的讲出来，则可以使用 -w 选项：espeak -w out.wav "Audio file test" espeak 还能读出文件的内容。espeak -f plaintextfile 你也可以通过标准输入传递要发音的文本。举个简单的例子，通过这种方式，你可以创建一个发音盒子，当事件发生时使用声音通知你。你的备份完成了？将下面命令添加到脚本的最后试试效果：echo "Backup completed" | espeak -s 160 -a 100 -g 4 假如有日志文件中出现错误了：tail -1F /your/log/file | grep --line-buffered 'ERROR' | espeak 或者你也可以创建一个报时钟表，每分钟报一次时：while true; do date +%S | grep '00' && date +%H：%M | espeak; sleep 1; done 你会发现，espeak 的使用场景仅仅受你的想象所限制。享受你这会发音的 Fedora 系统吧！via: https://fedoramagazine.org/add-speech-fedora-system/作者：Alessio Ciregia 译者：lujun9972 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出