前言、为什么要适配Alpine Linux
为什么不是更多用户的Ubuntu,Debian,这是很多朋友第一时间会问的问题。 首先Alpine Linux占用的资源更小,使用更轻量的包管理系统,5M的最小rootfs是其他发行版没法比的。 其次Luckfox pico系列板子的Flash和RAM资源都比较少(除了最新的MAX版本),Alpine Linux是最优选择。
也有很多朋友没听说过Alpine Linux,担心不好用,接下来可以烧录固件体验一下。
一、下载固件并烧录
在文章链接下载nand固件压缩包之后,解压缩之后打开SocToolKit软件,在未接电的情况下按住BOOT按钮不放, 然后插入USB。 软件界面检测到maskrom设备后,点击搜索路径按钮,找到刚刚解压的目录,确认。 然后把所有下载项目都勾选上,点击下载按钮。
二、连接串口并登录
下载完成后,拔出USB断电,连接串口开始配置系统。
按Luckfox官方wiki的指引接好串口后,打开串口工具软件,给开发板接上网线和电源,就可以看到开发板的启动信息了。 镜像已开启了串口接入时,终端root账户免密登录配置,不需要再输入账户和密码了。
简单查看一下根文件系统是否可以写入,就可以开始下一步的配置了。
三、网络配置
资源少的板子不会安装各种网络工具,ifconfig和ip命令是最常用的配网和查看工具。
Alpine Linux提供了网络服务,可以通过编辑/etc/network/interfaces文件实现静态IP或者DHCP动态获取IP。以下就是将板子的IP网络配置成192.168.50.59,网关配置成192.168.50.1的模版。
`auto eth0
iface eth0 inet static
address 192.168.50.59
netmask 255.255.255.0
gateway 192.168.50.1`
建议使用静态IP,这样方便ssh远程登录到开发板。配置好之后,需要将networking服务启动才可以使用。 镜像默认已经开启了该服务,如果发现能ping通局域网和外网ip,但是无法解析域名,需要将/etc/resolv.conf文件里的域名解析服务器换成当地的服务器IP。
本文的镜像默认是使用网线接入网络,这样才能发挥包管理器和网络优势。USB的RNDIS是没有配置好的,建议插入网线使用。
四、ssh远程登录
镜像里默认安装和配置了ssh远程服务,已开启root远程登录配置,只需要接入串口的情况下,输入passwd
命令修改root账户密码,然后就可以使用ssh客户端进行登录了。例如Termius的配置案例如下
配置好就直接ssh远程连接就好了。
五、包管理器APK的使用
和大多数的人一样,给板子适配发行版的最大理由就是不想编译,直接安装软件包。
Ubuntu的包管理器命令很多,用了这么多年命令行的我也没记住,只记得更新和装软件包而已。
Alpine Linux的包管理器命令没这么复杂,记住3个就行了。
- apk update,更新本地索引
- apk add,安装软件包
- apk del,删除软件包
就这么简单,没什么复杂的。例如安装gcc,只需要运行apk add gcc命令即可。
安装完可以运行gcc -v查看版本情况
Nand flash的空间不是很大,不建议安装大型的软件包,例如安装gcc后,剩余空间只有38.2M。
这时候使用apk del gcc命令可以删除gcc软件包和它的依赖。
删除gcc后,剩余空间又变成80多M了。
我提供的镜像已修改成阿里源,正常的话安装速度都很快,觉得慢可以自行更换其他源。 修改一下/etc/apk/repositories文件就可以了。 大多数情况下,apk安装和删除软件包都会自动处理相关依赖,怎么来就怎么走,不会残留垃圾。
六、服务管理
由于板子资源少,自然能跑的服务也不多,镜像里默认使用的是OpenRC来管理服务。
所有可用的服务都在/etc/init.d/目录下。 常见的命令有以下几个。
- rc-status查看默认级别的运行服务
- rc-update add 添加服务到运行级别服务清单
- rc-update del 从对应运行级别服务清单删除服务
- rc-service 管理服务启停
添加和删除服务时,需要增加运行级别标识,例如常见的default,boot等等。 一般使用默认运行级别default即可,特殊的服务需要自行搜索一下相关配置。 举个例子,现在我们先查看一下默认级别都有什么服务。 在终端里运行rc-status命令,运行后终端结果如下
然后分别尝试以下把sshd服务禁止启动,再把sshd服务开启启动。 只需要运行rc-update del sshd就可以禁止sshd服务启动了。 同样的,运行rc-update add sshd default就可以在启动时开启sshd服务。
不想重启板子,重新启动服务可以用rc-service来管理当前系统的服务程序。 详细的内容请查看参考资料的OpenRC资料