百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

在树莓派上:安装Ubuntu Server 20.04

itomcoil 2025-02-13 12:30 16 浏览

什么是树莓派



树莓派是英国树莓派基金会(
https://www.raspberrypi.org
)开发的卡片式电脑,采用高通的BCM2711 ARM64处理器,可用于机器人、物联网、边缘计算、通用计算等多种场景,由于性能不错、扩展丰富、价格便宜,很多开发者也会使用树莓派作为自己的实验性开发平台,或作为低成本服务器使用。

树莓派最新的硬件版本为4B,板载内存包括2GB、4GB和8GB三个版本,其他部分的硬件完全一致:1个ARM64(ARM v8)64位四核处理器,Cortex A72内核,运行在1.5GHz;1个USB Type-C供电口;两个Micro HDMI显示接口,支持双4K显示器;双通道MIPI DSI显示输出和双通道MIPI CSI摄像头输入;2个USB 2.0 Type A接口;2个USB 3.0 Type A接口;1个“真”千兆RJ45接口;支持IEEE 802.11ac标准的2.4G/5G无线网卡;支持Bluetooth 5.0;40针的GPIO针脚;1个用于引导系统的MicroSD(TF)卡插槽。核心板版本的树莓派4还支持选择板载eMMC芯片。

这一代树莓派4的供电需求比树莓派3多一些,官方建议使用5V3A或最低5V2.5A的供电。供电可以采用三种方式:使用USB Type-C供电口;GPIO供电针脚;使用PoE供电针脚。其中PoE供电需要外接HAT板,直接通过PoE交换机从网线供电。

从扩展能力上来说,树莓派4已经非常强悍,完全不比普通的电脑差,而且开箱即用,可以做到完全静音。


什么是Ubuntu Server


Ubuntu(https://www.ubuntu.com)是2004年开始发布的一款Linux发行版,多年处于最流行的Linux发行版前几名,在Linux桌面用户中已经超越曾经的王者Redhat Fedora。随着云计算生态的发展,Ubuntu也推出了针对云服务器的Server版,专门针对云计算进行了优化。

树莓派官方有点用心做硬件用脚做软件的感觉,迟迟都没有推出64位版本的Raspberry Pi OS的系统固件,而经过第三方测试,64位环境下才能够真正发挥出树莓派4的全部能力。

自2020年4月发布20.04版起,Ubuntu对树莓派提供了更好的支持。如果我们想搭建LNMP服务、内网域服务、区块链节点、Git仓库服务、NAS服务、容器服务、arm集群、分布式开发环境等等,在树莓派4上安装Ubuntu Server也成为了一个更适合的选择。

今天我们就讲一下如何在树莓派4B上安装Ubuntu Server。


准备工作

首先,我们得有树莓派^_^。

国内无论是马爸爸家还是东哥家都可以买得到树莓派4B的硬件,大部分商家还提供各种套餐。如果是开发用,我个人建议直接买主板、32G内存卡(MicroSD)和读卡器、国产电源、1根MicroHDMI=>HDMI转接线、网线。另外根据环境来选择使用裸板、散热片还是带小风扇的散热“装甲”。如果重度使用,建议选择带小风扇的散热方案。

如果是用于嵌入式开发、或者直接当服务器使用可以考虑不买HDMI转接线。有触控产品开发需求可选择有7寸液晶屏的套餐。如果当机器人或者嵌入式控制板用,直接买裸板就好了。如果想进行分布式开发或者自建arm集群,可以考虑一些商家提供的堆叠外壳。

接下来我们要准备安装软件的环境。先去Ubuntu官网下载预制好的树莓派4固件系统(
https://ubuntu.com/download/raspberry-pi
),记得选择Raspberry Pi 4的64-bit版本,然后去树莓派官网下载烧录工具Raspberry Pi Imager
https://www.raspberrypi.org/downloads/
),根据自己的操作系统选择对应的版本下载。

当然我们也可以用其他烧录工具进行烧录,例如dd、imagewriter也都可以,只是Raspberry Pi Imager更省事一些。

烧录系统固件

将用于安装系统固件的内存卡通过读卡器插到安装Raspberry Pi Imager的电脑上。

安装好Raspberry Pi Imager后,打开的界面如下:


选择“Choose OS”,会弹出来一个支持树莓派的系统列表,我们把列表滚动到最下面,选择“Usecustom”,然后找到我们下载的UbuntuServer固件,文件名应该类似:
ubuntu-20.04.1-preinstalled-server-arm64+raspi.img.xz


然后点击“WRITE”,等一会之后系统就烧录好了。

把内存卡插入到树莓派主板背面的TF插槽,接上电源、显示器,我们就可以开始配置系统了。

配置Ubuntu Server系统

接通电源后,系统进入引导状态,第一次会进行很多自检工作,并且把内存卡上未被固件占用的空间重新划分为可用的磁盘空间。

当出现登录界面Login提示符的时候,请不要着急登录系统,等个半分钟,这时候系统自带的Cloud-init进程会自动监测内网是否有Nova Metadata服务,熟悉Openstack的小伙伴一定知道这是什么。也就是假如内网有一个私有云的环境的话,Ubuntu Server会自动获取包括主机名、用户设置、IP地址等相关的配置信息。

如果没有获取到metadata信息,系统才真正进入可以登录的状态。默认的用户名和密码都是ubuntu,登录之后第一件事系统就会提示修改密码,修改后,就可以开始使用系统了。

如何配置Ubuntu系统的IP地址,网上有很多教程,我就不复述了,记得系统默认自带的网络渲染器是networkd即可。

接下来大家可能会配置一下国内的Ubuntu软件源,阿里云、网易、清华Tuna都是不错的选择。不过大家要注意ARM64的Ubuntu源类似是
https://mirrors.aliyun.com/ubuntu-ports
,而不是
https://mirrors.aliyun.com/ubuntu。

由于树莓派4内存资源毕竟有限,例如我就买了几个2GB的版本,所以我会停掉一些比较消耗内存且对我没什么用的服务。

我会:

$ sudo apt remove snapd cloud-init

还会:

$ sudo systemctl stop unattended-upgrades && sudo systemctl disable unattended-upgrades

桌面环境

如果大家想安装一些桌面环境的话,Ubuntu官方也给出了选择:

$ sudo apt search ubuntu-desktop

可以选择kde环境、gnome环境、xfce环境、lxde环境,个人推荐lubuntu-desktop,资源占用少,性能不错。

不过大家不要对树莓派4上跑桌面环境期待太多,在图形性能上还是跟pc机差距巨大,看优酷爱奇艺网易视频什么的能卡到你怀疑人生。但是装个sublime text或者vscodium之类的编辑器,配置个双屏幕开发一下php、python、nodejs程序,还是毫无问题的。

系统装好之后干点什么

正如前面所言,树莓派4可以当作一个很不错的服务器环境使用,我就用5块树莓派搭建了个分布式开发环境,部署了k8s集群、tidb集群、tdengine集群、sawtooth区块链节点等。在后续的文章中,我会详细介绍我是如何安装部署相关环境的。

接下来会是“在树莓派上”系列的下两篇《在树莓派上:安装CoreDNS服务》、《在树莓派上:安装部署TDengine时序数据库集群》,敬请期待。

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...