news 2026/4/18 0:18:05

一看就会的开机启动配置,适合所有Armbian初学者

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一看就会的开机启动配置,适合所有Armbian初学者

一看就会的开机启动配置,适合所有Armbian初学者

1. 开机启动到底是什么?为什么你需要它?

你有没有遇到过这种情况:每次重启 Armbian 设备(比如香橙派、树莓派),都要手动运行一段脚本,比如点亮一个 LED、设置 GPIO 引脚、启动某个程序?重复操作不仅麻烦,还容易忘记。

那有没有办法让系统“自己动手”?当然有——这就是开机启动配置

简单说,开机启动就是:你写好一段命令或脚本,告诉系统:“每次开机时,自动帮我执行它。”

对初学者来说,这听起来可能有点“高级”,但其实只要搞懂两个关键词:systemdinit.d,再跟着步骤一步步来,真的是一看就会

本文专为 Armbian 新手设计,不讲复杂原理,只讲你能用、能懂、能落地的方法。无论你是想点个灯、跑个 Python 脚本,还是自动挂载磁盘,都能照着做出来。


2. Armbian 启动机制:systemd 还是 init.d?

2.1 先搞清楚:你的 Armbian 用的是什么?

现在的 Armbian 基于 Debian 或 Ubuntu,默认使用systemd作为启动管理器。你可以用一句话理解:

systemd 是现代 Linux 的“总指挥”,负责在开机时安排所有服务的启动顺序。

虽然老式的init.d脚本还能用,但它其实是被systemd“兼容支持”的——也就是说,真正干活的还是 systemd

2.2 验证你的系统是不是 systemd

打开终端,输入:

ps -p 1 -o comm=

如果输出是:

systemd

那就说明你的系统确实是 systemd 在掌管全局。这是后续操作的基础。


3. 两种方式实现开机启动:init.d vs systemd

虽然最终都是 systemd 在执行,但我们可以用两种方式“提交任务”:

方法位置适合谁推荐度
init.d脚本/etc/init.d/完全新手,只想快速搞定
systemd服务/etc/systemd/system/*.service想长期维护、更稳定

我们先从最简单的init.d开始,再过渡到推荐的systemd方式。


4. 方法一:用 init.d 脚本快速上手(适合新手试水)

4.1 创建你的启动脚本

假设你想在开机时点亮一个连接在 GPIO6 的 LED。

创建脚本文件:

sudo nano /etc/init.d/gpio-init.sh

粘贴以下内容:

#!/bin/bash # 导出 GPIO 引脚 echo "6" > /sys/class/gpio/export sleep 0.1 echo "out" > /sys/class/gpio/gpio6/direction echo "1" > /sys/class/gpio/gpio6/value # 可以继续添加其他 GPIO 设置

4.2 给脚本加执行权限

sudo chmod +x /etc/init.d/gpio-init.sh

4.3 注册为开机启动

使用update-rc.d命令注册:

sudo update-rc.d gpio-init.sh defaults

这样系统就会在启动时自动调用这个脚本。

4.4 测试是否生效

你可以手动运行测试:

sudo /etc/init.d/gpio-init.sh

如果 LED 亮了,说明脚本没问题。重启后应该会自动点亮。


5. 方法二:用 systemd 服务(推荐长期使用)

虽然init.d简单,但systemd更强大、更可靠。它支持:

  • 自动重启失败的服务
  • 查看详细日志
  • 控制启动依赖(比如等网络就绪后再运行)

5.1 把脚本移到标准位置

先把脚本移到/usr/local/bin/,这是存放本地程序的标准目录:

sudo mv /etc/init.d/gpio-init.sh /usr/local/bin/gpio-init.sh sudo chmod +x /usr/local/bin/gpio-init.sh

5.2 创建 systemd 服务文件

新建一个 service 文件:

sudo nano /etc/systemd/system/gpio-init.service

写入以下内容:

[Unit] Description=GPIO 初始化脚本 After=multi-user.target [Service] Type=oneshot ExecStart=/usr/local/bin/gpio-init.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target

解释一下关键字段:

  • Description:服务描述,方便你识别
  • After=multi-user.target:表示在系统基本服务启动后再运行
  • Type=oneshot:适合只运行一次的脚本(比如初始化)
  • RemainAfterExit=yes:即使脚本执行完,也认为服务是“激活”状态
  • WantedBy=multi-user.target:加入多用户模式的启动流程

5.3 启用并启动服务

加载配置:

sudo systemctl daemon-reload

启用开机自启:

sudo systemctl enable gpio-init.service

立即运行一次(不用重启):

sudo systemctl start gpio-init.service

5.4 检查运行状态

查看服务是否成功:

sudo systemctl status gpio-init.service

如果看到active (exited),并且没有报错,说明一切正常。

你还可以用journalctl查看详细日志:

sudo journalctl -u gpio-init.service

6. 如何查看当前有哪些开机启动项?

想知道系统里已经设置了哪些自动启动的服务?用这几个命令就够了。

6.1 查看所有启用的 systemd 服务

systemctl list-unit-files --type=service --state=enabled

你会看到类似:

ssh.service enabled cron.service enabled gpio-init.service enabled

这些都会在开机时自动启动。

6.2 查看 init.d 脚本的注册情况

如果你用了update-rc.d,可以用:

ls /etc/rc*.d/

输出可能像:

/etc/rc2.d/S01gpio-init.sh /etc/rc2.d/S02cron

Sxx表示启动顺序,数字越小越早执行。

6.3 查看启动依赖关系(进阶)

想看看系统启动时都加载了啥?

systemctl list-dependencies multi-user.target

这会列出进入“多用户模式”时加载的所有服务和目标。


7. 常见问题与解决方法

7.1 脚本没执行?可能是路径不对

确保ExecStart=指向的脚本路径正确,并且有执行权限。

检查命令:

ls -l /usr/local/bin/gpio-init.sh

应该看到-rwxr-xr-x权限。

7.2 提示“Permission denied”?

GPIO 操作需要 root 权限。而 systemd 服务默认以 root 运行,所以没问题。

但如果你手动测试脚本,记得加sudo

sudo /usr/local/bin/gpio-init.sh

7.3 脚本执行太快,GPIO 还没准备好?

加个短暂延迟:

sleep 0.5

放在关键操作前,比如导出 GPIO 后。

7.4 想让脚本开机后 10 秒再运行?

可以在 service 文件中加:

[Service] ... ExecStartPre=/bin/sleep 10

这样就会延迟 10 秒执行主命令。


8. 实战案例:让 LED 开机闪烁 3 次

不只是点亮,我们来点更有意思的。

修改/usr/local/bin/gpio-init.sh

#!/bin/bash # 导出 GPIO echo "6" > /sys/class/gpio/export sleep 0.1 echo "out" > /sys/class/gpio/gpio6/direction # 闪烁 3 次 for i in {1..3}; do echo "1" > /sys/class/gpio/gpio6/value sleep 0.3 echo "0" > /sys/class/gpio/gpio6/value sleep 0.3 done # 最后保持点亮 echo "1" > /sys/class/gpio/gpio6/value

保存后,重新加载服务:

sudo systemctl daemon-reload sudo systemctl restart gpio-init.service

重启设备,你会看到 LED 先闪三下,再常亮——像是在“打招呼”。


9. 总结:选择最适合你的方式

9.1 回顾两种方法

  • init.d 脚本:简单直接,适合临时测试或快速上手,但功能有限。
  • systemd 服务:更专业、更稳定,支持日志、依赖、重启策略,强烈推荐用于正式环境

9.2 给初学者的建议

  1. 先用 init.d 写个简单脚本,验证 GPIO 是否正常工作
  2. 再迁移到 systemd,写成 service 文件,实现真正的自动化
  3. systemctl statusjournalctl学会排查问题

9.3 你可以举一反三的应用场景

  • 自动挂载 U 盘或硬盘
  • 启动 Python 监控脚本
  • 设置屏幕亮度或音频输出
  • 运行一个本地 Web 服务

只要能写成命令,就能让它开机自动运行。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:43:24

突破效率瓶颈:APK批量管理工具的全方位解决方案

突破效率瓶颈:APK批量管理工具的全方位解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Android应用开发与测试流程中,APK批量安装与多…

作者头像 李华
网站建设 2026/4/18 10:06:50

音频频谱分析工具入门指南:从原理到实践

音频频谱分析工具入门指南:从原理到实践 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 为什么频谱分析是音频工作者的必备技能? 在数字音频领域,频谱分析如同医生的听诊器&am…

作者头像 李华
网站建设 2026/4/18 8:37:42

SVGcode:智能转换与无损放大的位图转矢量解决方案

SVGcode:智能转换与无损放大的位图转矢量解决方案 【免费下载链接】SVGcode Convert color bitmap images to color SVG vector images. 项目地址: https://gitcode.com/gh_mirrors/sv/SVGcode 在数字设计的世界里,位图图像就像用像素砖块砌成的墙…

作者头像 李华
网站建设 2026/4/18 8:00:01

实测Qwen3-Reranker-4B:32K长文本排序效果惊艳分享

实测Qwen3-Reranker-4B:32K长文本排序效果惊艳分享 1. 开场直击:为什么这次实测让我停下手头工作 你有没有遇到过这样的场景? 在搭建RAG系统时,嵌入模型召回了100个文档片段,但真正有用的可能只有前3个——其余97个要…

作者头像 李华
网站建设 2026/4/17 19:25:47

3分钟上手Crontab-UI:可视化管理定时任务的新手友好指南

3分钟上手Crontab-UI:可视化管理定时任务的新手友好指南 【免费下载链接】crontab-ui Easy and safe way to manage your crontab file 项目地址: https://gitcode.com/gh_mirrors/cr/crontab-ui 还在为复杂的crontab命令行操作而头疼吗?作为开发…

作者头像 李华