news 2026/4/22 17:26:04

一看就会的开机启动配置,适合所有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 23:13:26

亲测Qwen3-0.6B,AI对话效果真实体验分享

亲测Qwen3-0.6B,AI对话效果真实体验分享 最近在CSDN星图镜像广场上试用了刚开源的 Qwen3-0.6B 模型,说实话,我对这种轻量级大模型一直持保留态度——参数量只有0.6B,能有多强?但实际跑完一轮对话后,我有点…

作者头像 李华
网站建设 2026/4/9 19:28:02

直播录制高效解决方案:从零开始掌握DouyinLiveRecorder

直播录制高效解决方案:从零开始掌握DouyinLiveRecorder 【免费下载链接】DouyinLiveRecorder 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveRecorder 你是否曾遇到这样的困境:心仪的主播直播时你正在工作,网络波动导致直播…

作者头像 李华
网站建设 2026/4/21 23:39:38

游戏增强框架Reloaded-II零基础配置指南

游戏增强框架Reloaded-II零基础配置指南 【免费下载链接】Reloaded-II Next Generation Universal .NET Core Powered Mod Loader compatible with anything X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II Reloaded-II作为新一代通用.NET Core驱动…

作者头像 李华
网站建设 2026/4/19 5:10:42

3种突破信息壁垒的高效方案:让优质内容触手可及

3种突破信息壁垒的高效方案:让优质内容触手可及 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息付费时代,如何合规获取受限内容成为知识工作者面临的重要…

作者头像 李华
网站建设 2026/4/18 16:11:28

AI语音增强新选择|FRCRN-单麦-16k镜像部署与推理实战

AI语音增强新选择|FRCRN-单麦-16k镜像部署与推理实战 在远程会议、在线教育、语音识别等场景中,环境噪声常常严重影响语音质量。如何快速实现高质量的语音降噪?今天要介绍的 FRCRN语音降噪-单麦-16k 镜像,提供了一种开箱即用的AI…

作者头像 李华
网站建设 2026/4/18 5:18:05

PyTorch通用开发镜像实战:预装Pandas/Matplotlib,轻松玩转AI项目

PyTorch通用开发镜像实战:预装Pandas/Matplotlib,轻松玩转AI项目 1. 为什么你需要一个“开箱即用”的PyTorch环境? 你是否经历过这样的场景: 刚下载完PyTorch官方镜像,打开终端第一件事不是写模型,而是—…

作者头像 李华