阿尔卑斯山Linux的第一步

这里有一个简短的入门知识 阿尔卑斯山Linux,专门针对Raspberry Pi平台

为什么是Alpine Linux?

  • 它是小的
  • 它可以通过复制SD的FAT分区上的文件进行安装。
  • 它可以从RAM中运行,文件系统将保持只读状态(当然也可以持久化修改)。
    • 这对于电源可能被不可预测地切断的嵌入式系统是非常好的!
  • 它是一个裸露的系统--没有杂乱无章的东西,安全性更好。
  • 因此,它是嵌入式开发的一个很好的选择。

Alpine Linux经常被用于Docker容器。而且在树莓派平台上也支持它。

为什么不是Alpine Linux?

  • 不建议初学者使用Alpine--他们肯定应该使用NOOBS或Raspbian。
    • Alpine假定有一定程度的Linux知识,并增加了它自己的工具来管理安装。
  • 阿尔卑斯山的用途 用musl代替glibc 作为libc(标准C库)--这对嵌入式和资源有限的系统来说是很好的。
    • 然而,"大型发行版 "使用glibc--软件兼容性可能是一个问题。
  • 与Raspbian相比,可用的预编译包较少--这意味着你可能要靠自己来构建你需要的包。
  • 你将不得不照顾到许多事情,例如: 设置正确的CRDA - 这可能是非常耗时的(我们 之前写过一篇博文 关于这一点)

强烈推荐阅读

安装

我们建议使用 Armhf 的版本,而不是aarch64的版本。截至本文写作时,最新的Alpine版本是3.8.1。

我已经在Pi 3 B+和Zero W上测试了Alpine,并确信它可以在Pi 1、2和3上运行。

  • 为了确保数据的完整性 验证SHA256哈希值.在Windows上,这可以用VisualHash来完成。
  • 提取tar.gz文件。在windows下,这可以用7-zip来完成
  • 同时解压tar文件(到它自己的目录中)。

提取tar文件将给你需要复制到SD卡的FAT32分区的内容。

启动Alpine不需要其他分区。

记住,Raspberry Pi需要一个FAT分区作为第一个分区才能正常启动。

奖励提示:如果你需要格式化,SD卡协会的SD格式化器将在Windows上完成。

  • 将该目录的内容复制到SD卡的FAT分区上

形象

截图显示了刚安装的Alpine Linux。

值得注意的目录。

  • apks - 包含Alpine软件包

无盘模式

Raspberry Pi的默认安装模式是 无盘模式.

在无盘模式下,SD卡最初只用于将系统(以及你的apkovl修改,见下文)加载到RAM文件系统中。

你必须在两次会议之间使用Alpine的保留修改。  lbu (本地备份) 公用事业。

在Raspberry Pi上的Alpine的默认登录

在插入Alpine SD卡的情况下启动Raspberry Pi。

  • 用户:root
  • 密码。。

密码是不必要的,在输入root并按下回车键后,你就可以登录了。

设置程序

登录后,输入

设置-阿尔宾

提示:在德国的键盘布局中,破折号"-"在"?"键上。

  • 阿尔派恩将建议设置一个键盘布局作为第一步
    • 然后询问键盘的变体

我使用了 "de "和 "de-nodeadkeys"。

  • Alpine将要求提供系统的主机名
  • 然后你可以设置网络
    • 你可以为有线和无线设备设置网络
  • 设置IP,支持dhcp
  • 如果你不想进一步设置网络设备,你可以输入 完成 并按回车键;或者,你可以设置wlan0(在Pi 3B+上)。
  • Alpine会问你是否要做额外的手动网络配置。按回车键,选择默认值(不)。

额外设置

  • 此后,Alpine将要求你设置一个新的根密码
  • 时区
    • 例如:欧洲
    • 例如:柏林为子时区
    • 欧洲/柏林也可以。
  • HTTP/FTP代理URL(如果你是在一个 "正常 "的网络环境中,则没有)。

镜子

  • 由于时钟偏移,你可能会遇到设置软件包镜像的问题(不能添加镜像)。
  • 来解决这个问题,运行 设置-阿尔宾 第一遍完成后再来第二遍
    • 你会得到一些警告,因为一些服务已经被启动了。
  • 默认选项 f 将测试最快的镜像

SSH服务器

  • openssh是默认的,但你也可以安装dropbear

Dropbear会节省一些内存,但它的功能较少。我们推荐OpenSSH。

Alpine现在将为你生成SSH主机密钥。

NTP客户端

  • 忙碌的盒子
  • openntpd
  • chrony (默认)

存储配置

设置过程中的一个重要步骤是设置配置变更的保存位置。

mmcblk0p1 是预选的默认值

这是Raspberry Pi的SD卡的第一个分区(FAT32分区)。

之后,Alpine会建议为apk包建立一个本地缓存目录,也在SD卡上。/media/mmcblk01p/cache

重要提示:Alpine将不保存 任何 在无盘模式下的变化。 甚至是你刚刚完成的设置.你需要使用lbk工具来持久化这些变化!


更新系统

apk更新

apk ugrade

与Debian的衍生产品相当类似,真的。


安装软件包

apk 添加 htop

添加 htop 包。(允许你以更形象的方式监控资源使用情况)。

请记住,如果你不使用lbk工具,Alpine将不会坚持软件包的安装。

持续的变化

lbk工具(本地备份)用于保持无盘模式下的变化。在你对你的设置感到满意后运行它。

lbu commit -d

这将在你的FAT32分区创建一个名为.apkovl.tar.gz的文件。在这个文件中,lbu将保存各自对基本配置的修改。

有用的旗帜。

-d: 将删除旧的apk覆盖文件。

-n:不要承诺,展示本来要承诺的东西。

这也是在大量创建SD卡时动态修补这些配置的好地方,从而将它们注入系统(如修改的设置/IP地址/...)。

形象

在我的例子中,我把系统称为 "mir",这就是为什么apkovl被称为mir.apkovl.tar.gz。

形象

注意,apkovl中只包含 "etc "这个文件夹。

这是因为lbu,在默认情况下。 只会持续保持在 /etc 目录!(除了/etc/init.d)

将其他目录添加到lbu的持久化目录列表中。

要添加一个目录或文件,除了 /etc 来监控变化和提交(当你运行lbu commit时),使用 lbu包括:

lbu include /home/miaucat

然后提交文件系统。

你只需要包含一次目录,然后提交。以后的提交也会保留所包含的目录。


显示当前的变化。

lbu状态

将显示自上次提交以来更改的文件。

使用-a标志来显示与新安装相比的所有文件。

请注意,在重新启动时,Alpine将提取apkovl的内容,这将需要一点额外的时间(和内存)。

要知道的有趣的事情

  • 为了缩小尺寸,阿尔派恩使用了 忙碌的盒子.Busybox是一个单一的可执行文件,它与不同的实用程序有符号链接(如 焦油,等等)。这是嵌入式系统中经常使用的一种技术,例如Fritz!Box。
  • Alpine将FAT32分区挂载为/media/mmcblk0p1的只读分区。它将被短暂地重新挂载为可写的,以便持续地进行修改。
  • Alpine将在FAT32分区创建一个缓存目录,用于缓存从在线镜像下载的apk。
  • 在默认情况下,只有 vi vi包含在busybox可执行文件中(/usr/bin/vi是/bin/busybox的符号链接)。
  • lbu可以保持 多个备份,你可以恢复到一个较早的备份。这只影响到哪个apkovl被认为是活动的。
  • Alpine没有udev,它有 ǞǞǞ.
  • 由于Alpine使用基于RAM的文件系统,你可以在Alpine启动后简单地移除SD卡,然后用它启动下一个Pi。非常酷!
    • 注意简单地把它插回去将不允许你提交--你会得到一个I/O错误。

资源