Ubuntu/Debian开发板系统初始化配置最佳实践
用途说明
目的
充分利用小型开发板的算力,实现个人服务器
配置包括Jekins、Git、Github WebHook、内网穿透
适用系统、硬件
debian10及更高版本(lsb_release -a
或 cat /etc/redhat-release
、uname -a
)
文章所使用硬件:Tinker Board 2s
操作速览
- 基础配置篇
- 开启SSH服务并设置开机自启动
- 修改密码
- (推荐)关闭图形化界面、禁用自动休眠
- 挂载硬盘最佳实践
- 自动上报局域网IP
- 系统重装与备份
- 持续集成篇
- 安装Docker与(可选)图形化管理界面Portainer
- Jekins最佳实践
- (可选)搭建自己的gitlab代码库
- NAS篇
- 内网穿透最佳实践
- 进阶篇
- 安装Kubernetes
- 安装k3s(开发板或单节点云服务器推荐)
1. 基础配置篇
1.1 开启SSH服务并设置开机自启动
Debian从8.0开始,默认关闭了SSH
1、修改sshd_config
文件,命令为:nano /etc/ssh/sshd_config
2、将#PasswordAuthentication no的注释去掉,并且将NO修改为YES
3、将#PermitRootLogin yes的注释去掉,允许Root账号登录
4、启动SSH服务,命令为:/etc/init.d/ssh start
或者service ssh start
5、验证SSH服务状态,命令为:/etc/init.d/ssh status
- 添加开机自启动,推荐使用systemd,参考阮一峰的文章
可能出现的问题:https://blog.csdn.net/Peter_JJH/article/details/108446380
1.2 修改密码
Tinker Board 2s默认的初始账号密码是账号:linaro
密码:linaro
修改root密码sudo passwd root
输入新密码
修改linaro密码sudo passwd linaro
1.3 (可选)关闭图形化界面、禁用自动休眠
目的:降低功耗,服务器无需图形化界面
关闭图形化界面:systemctl set-default multi-user.target
切换回图形化界面 sudo systemctl set-default graphical.target
检查当前的target unit,确认已关闭 systemctl get-default
重启机器:sudo systemctl reboot
1.4 挂载硬盘
挂载硬盘与永久挂载
目的:挂载硬盘后可将重要数据都放置到硬盘中,开发板需要系统升级时,硬盘数据不受影响。
1.4.1 错误示例/etc/fstab
挂载硬盘:
查看硬盘信息 fdisk -l
(可选)分区操作 fdisk /dev/sdb1
挂载硬盘到/mnt目录 mkfs -t ext4 /dev/sdb1
查看硬盘信息 mkfs -t ext4 /dev/sdb1
永久挂载代表机器重启后仍能自动挂载到系统
Debian 使用 UUID 来实现硬盘自动挂载。
- 通过 blkid 查找所有硬盘的 UUID:
sudo blkid
可以看到挂载的硬盘 /dev/sdb1 的 UUID 为:ad5f412a-0a0c-42af-afd3-eecec6fd96d2 ,TYPE 为:ext4 。 添加自动挂载点sudo vim /etc/fstab
在最后一行添加:UUID=ad5f412a-0a0c-42af-afd3-eecec6fd96d2 /mnt ext4 defaults 0 0
执行挂载sudo mount -a
查看挂载点:df -h
这时,sudo reboot 重启后挂载点依然存在。
为什么它是一个错误示例
-
当你的硬盘出现问题时,或者硬盘uuid填写出错时,你的开发板在重启时无法挂载该硬盘,导致系统无法启动;
-
而开发板不像是家用计算机,有bootloader界面可以进入急救模式。
也就是说,一旦磁盘出现问题,开发板系统将无法进入,必须重装系统!重装系统!重装系统!
1.4.2 最佳实践
写入/etc/fstab的方式风险过高,有没有一种方式,哪怕挂载失败了,系统也能正常启动?当然我们不可能每次手动执行挂载命令。
我们可以写一个开机启动的服务,执行一个脚本即可
touch /usr/bin/initmount.sh
创建service,执行touch /etc/systemd/system/mountdisk.service
, 编辑内容
执行
更进一步,如果你的磁盘分区会用于存储docker的镜像,需执行vim /lib/systemd/system/docker.service
,保证先执行磁盘挂载脚本再启动docker。添加后示意:
1.5 自动上报局域网IP
推荐加入到/usr/bin/initmount.sh脚本中,随系统启动。
由于本人有购买云服务器,后续将利用该服务器实现frp内网穿透,因此在这里采用了scp ip信息到了云服务器,实现ip上报
apt-get install -y sshpass
1.6 系统重装与备份
重装后无论是ssh配置或挂载都消失了,最佳方式为记录一个脚本,每次重装后执行脚本将之前做过的操作都重来一遍
2. 持续集成篇
2.1 安装Docker与(可选)图形化管理界面Portainer
安装docker
参考《菜鸟教程》
不推荐安装图形化管理界面Portainer
安装docker就够了,安装图形化失去了docker容器可以一键执行的简便,只剩下可视化的用途了。笔者在使用Portainer后最终放弃了,如果有可视化docker运行状态的需求,可以安装Portainer试试,但不要拿它来启动容器,因为那么多的参数要填写,如果不懂参数的用途,Portainer里是不知道怎么配置的。
2.2 Jekins最佳实践
https://juejin.cn/post/6991303151051603999
查看初始密码cat /var/lib/jenkins/secrets/initialAdminPassword
3. NAS篇
3.1 内网穿透最佳实践
3.2 配置QBitTorrent
- 开发板上使用docker安装QBitTorrent服务
- 手机安装客户端
一键执行脚本
debian10
tinker-config可以编辑系统配置,包括远程VNC、SSH、账号密码
__EOF__

本文链接:https://www.cnblogs.com/nishiliu/p/17008043.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义