阿尔卑斯山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 - 这可能是非常耗时的(我们 之前写过一篇博文 关于这一点)
强烈推荐阅读
- https://wiki.alpinelinux.org/wiki/Alpine_Linux:Overview - 解释不同的模式(系统、无盘、数据),以及阿尔卑斯山的一般哲学 先看这个!
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - 在Raspberry Pi上安装Alpine
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management - 的 apk 公用事业
- https://wiki.alpinelinux.org/wiki/Alpine_local_backup - 的 lbu 公用事业
- https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos - 阿尔卑斯山的教程和方法列表
安装
- 下载地址 https://alpinelinux.org/downloads/ - 看下 树莓派 标题。
我们建议使用 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错误。
资源
- https://en.wikipedia.org/wiki/Alpine_Linux
- 阿尔卑斯山维基
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi - 树莓派安装教程
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi_3_-_Setting_Up_Bluetooth
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
- https://wiki.alpinelinux.org/wiki/Configure_Networking
- https://wiki.alpinelinux.org/wiki/Installing_Oracle_Java
- https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos
- https://wiki.alpinelinux.org/wiki/Comparison_with_other_distros - 比较了如何在不同的发行版上执行不同的管理任务,以及如何在Alpine上执行。
- https://pi3g.com/2018/08/06/wifi-channel-13-14-on-alpine-linux-aka-i-cant-connect-to-my-router-aka-crda-configuration/ - 在阿尔卑斯山增加WiFi频道13和14(欧洲),安装边缘/测试的软件包
- (没有调查过,可能很有趣)。通过以下方式建立基于Alpine的定制Raspberry Pi图像 皮曼