树莓派4安装Ubuntu20.10桌面版记录(64位系统arm架构desktop版)

2023-05-16

前言:这是我在树莓派4上安装Ubuntu20.10桌面版(64位arm)总结的一些坑,欢迎互相交流!
我的博客:https://www.515code.com/

一. 准备

Ⅰ.下载 Win32DiskImager

Ⅱ.下载 Ubuntu 镜像,地址:https://ubuntu.com/download/raspberry-pi

Ⅲ.写入系统至TF卡中

Ⅳ.写入完成后,打开名为 system-boot 的磁盘,然后打开 config.txt 文件,修改显存 gpu_mem 参数(单位MB,推荐512)

Ⅴ.卡片插入树莓派4中,开机

二. 系统设置

注意:接下来即将进入系统引导配置界面,在这过程中踩了不少坑,一定要耐心看完!!!

2.1 引导配置

Ⅰ.选择语言:中文(简体)

Ⅱ.键盘布局:选择 Chinese - Hanyu Pinyin(altgr),这样系统会内置拼音输入法

Ⅲ.选择时区,默认 Shanghai 即可

Ⅳ.填写个人与计算机信息(选择自动登录)

2.2 进入系统后配置

注意:千万不要更换镜像源,因为此版本系统应该是Ubuntu为树莓派4(ARM架构)专门定制的,原生源软件多,下载速度也不慢,如果更换了网上其他的源会导致无法通过 apt 下载某些软件。

Ⅰ.打开设置 - Region & Language,将语言改为汉语(中国)

Ⅱ.在应用中打开 Language Support,然后会提示完整安装语言支持,点击安装即可。安装完成后,键盘输入法系统选择 IBus,点击 应用到整个系统,然后重启系统。

Ⅲ.重启完成后,你会发现系统语言已经切换为中文,然后就可以愉快地使用Ubuntu了!

2.3. 开启SSH连接

详见第三节安装openssh-server 方法。

三. 某些软件的安装

安装软件前,请先执行下列命令:

sudo apt update
sudo apt-get update

3.1 SSH连接工具

请执行下列命令:

# 安装openssh-server
sudo apt-get install openssh-server

# 开机自动启动ssh命令
sudo systemctl enable ssh

# 单次开启ssh
sudo systemctl start ssh

# 单次关闭ssh
sudo systemctl stop ssh

#查看ssh是否启动,看到Active: active (running)即表示成功
sudo systemctl status ssh

然后就可以通过SSH工具连接了!推荐:Termius(一个跨平台的SSH工具)或者 Secure CRT。

3.2 温度监控组件

推荐一个效果如下的组件。

psensor插件

在安装Psensor前,你需要安装和配置lm-sensors,这是一个用于硬件监控的命令行工具。如果你想要测量磁盘温度,你还需要安装hddtemp。要安装这些工具,运行下面的这些命令。

sudo apt-get install lm-sensors hddtemp

接着开始检测硬件传感器:

sudo sensors-detect

要确保已经工作,运行下面的命令:

sensors

如果一切看上去没问题,使用下面的命令安装 psensor:

sudo apt-get install psensor

然后启动 psensor 即可。

如果想在面板中显示温度(如上图),进入 Sensor Preferences ,然后选择 Application Indicator菜单,勾选Display sensor in the label 选项即可。

如果想要开机自动启动,进入 Preferences->Startup 并选择 Launch on session startup 使每次启动时启动 psensor。

注:以上内容参考自 https://jingyan.baidu.com/article/a17d5285f043c38098c8f21d.html

3.3 安装第三方软件

点开商店应用,会发现没有什么软件可以下载,但是这个版本的系统内置了snap商店 https://snapcraft.io/ ,在命令行执行sudo snap install 软件名即可。

四. 一些BUG或者注意事项

目前发现的一些BUG(或者有解决方案,但是我太蠢了)和注意事项总结如下。

4.1 屏幕共享问题

Ⅰ.Ubuntu这个版本自带了屏幕分享(在设置里面),可以通过VNC连接,但是如果树莓派4在开机时没有外接显示器,是无法成功连接的。(就算树莓派4开机后,再连接实体显示器,也不能正常工作)。

Ⅱ.对于上述问题,可能有的教程会推荐安装一个 虚拟显示器插件 的方法,但是我及其不推荐(亲测不稳定,卸载插件后鼠标无法正常工作),方法在下面仅供参考。

随用户登录后,自动启动 vino server。编辑一个 vino-server.desktop 文件,如果 autostart 目录不存在,就创建一个。

sudo vim ~/.config/autostart/vino-server.desktop

填入下列内容:

[Desktop Entry]
Type=Application
Name=Vino VNC server
Exec=/usr/lib/vino/vino-server
NoDisplay=true

vino-server 不能在 console 中运行,所以需要在用户登录到桌面后用这样的方式自动启动。

安装 video-dummy

sudo apt install xserver-xorg-video-dummy

/etc/X11下创建 xorg.conf 文件,填写分辨率等信息:

sudo vim /etc/X11/xorg.conf

xorg.conf内容:

Section "Monitor"
Identifier "Monitor0"
HorizSync 28.0-80.0
VertRefresh 48.0-75.0
# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz
# Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync
# 1280x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 74.48 MHz
# Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
# 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
# Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
# 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
# Modeline "1600x900_60.00" 119.00 1600 1696 1864 2128 900 901 904 932 -HSync +Vsync
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
EndSection

Section "Device"
Identifier "Card0"
Option "NoDDC" "true"
Option "IgnoreEDID" "true"
Driver "dummy"
EndSection

Section "Screen"
DefaultDepth 16
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
    SubSection "Display"
    Depth 16
    Modes "1920x1080"
    EndSubSection
EndSection

配置用户自动登录桌面

查看当前用的是什么管理器:

cat /etc/X11/default-display-manager

我的是/usr/sbin/gdm3,那么编辑文件:

sudo vim /etc/gdm3/custom.conf

把下面三行的注释去掉,其中AutomaticLogin行修改成自己的用户名。

WaylandEnable=false
AutomaticLoginEnable = true
AutomaticLogin = username

重启电脑,就可以通过VNC登录了。

重启桌面

这样配置后,如果再次接上显示器后,显示器会黑屏,这时候,需要把/etc/X11/xorg.conf删除或者改名,比如改成/etc/X11/xorg.conf.dummy,然后重启显示管理器:

sudo systemctl restart display-manager

注:以上内容参考自 https://blog.deskangel.com/2020/05/02/vino-on-headless-ubuntu-desktop/

4.2 VNC无法连接问题

电脑VNC连接Ubuntu报错如下:

Unable to connect to VNC Server using your chosen security setting. Either upgrade VNC Server to a more recent version from RealVNC, or select a weaker level of encryption.

解决方法:

# 在Ubuntu中执行下列命令
gsettings set org.gnome.Vino require-encryption false

4.3 JDK奇怪的错误

原因:在oracle官网下载了 JDK1.8 arm64 版本,运行一个项目发现报错:NoClassDefFoundError: java.awt.Toolkit

解决方法:删除现有JDK,通过以下方式重新安装。

# 添加仓库源
sudo add-apt-repository ppa:openjdk-r/ppa
# 更新源
sudo apt-get update
# 安装JDK
sudo apt-get install openjdk-8-jdk
# 安装好后查看版本号
banana@pi:~$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.10-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

最后问题解决了,感慨arm架构坑有点多。

4.4 不要卸载python3

原因:执行命令 sudo apt remove python3 后,发现系统设置打不开了,火狐游览器等软件没了,然而命令行执行 python3 发现它依然存在。

解决方法:不要卸载!!!卸载后请按顺序执行下列命令进行抢救!

sudo apt install -f

sudo apt-get install python3-minimal

sudo apt-get -f install ubuntu-minimal ubuntu-standard ubuntu-desktop

4.5 Python3缺少SOCKS依赖

解决方法:先安装pip3,然后执行 pip3 install SOCKS

注意,如果执行pip3同样报这个错,执行下列命令即可解决:

unset all_proxy && unset ALL_PROXY
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派4安装Ubuntu20.10桌面版记录(64位系统arm架构desktop版) 的相关文章

  • ARM 调用约定是否允许函数不将 LR 存储到堆栈中?

    正如标题所示 我在理解 ARM 架构的调用约定时遇到问题 特别是 我仍然很难知道当你调用子程序时 LR 寄存器会发生什么 我认为 当您进入子程序时 处理 LR 寄存器的最明显 最安全的方法是将其存储到堆栈中 但该行为没有出现在文档中 因此我
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 具有桌面应用程序安全性的 OAuth2

    我有一个 Electron 应用程序 它基本上是一个 Google Drive 客户端 我打算使用 OAuth 2 但是 Google API 要求我在生成 client secret 的地方注册我的应用程序 由于这是一个桌面应用程序 因此
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • Beaglebone Black 的 U-boot 无法构建 - 目标 CPU 不支持 THUMB 指令

    我正在尝试按照 Chris Simmonds 的 掌握嵌入式 Linux 编程 中的说明为 Beagle Bone Black 构建 u boot 我已经构建了交叉工具链 现在正在尝试使用该工具链构建 Das U boot 但由于不支持 T
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 如何获取结构体中任意成员的位位置

    如何获取结构体中任意成员的位位置 在示例中 gt typedef struct BitExamStruct unsigned int v1 3 unsigned int v2 4 unsigned int v3 5 unsigned int
  • 使用 Visual C++ 在桌面上绘图

    我正在编写一个 opencv 应用程序 使用 Visual Studio VC 控制台应用程序使用激光束进行绘图 我想在桌面上画线 我知道绘图功能在 GDI32 dll 中可用 但对如何将 GDI32 dll 与我的 vc 代码集成感到困惑
  • 可以对 Xcode 中的 Arm 架构设置进行一些澄清

    据我了解 iPhone 5将采用新的架构 armv7s 我的项目具有有效的架构armv7 并且有Build Active Architecture Only set to true 由于现在商店中的每个应用程序都是为armv6 and or
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • getApplicationDocumentsDirectory 在 flutter 桌面(Windows)上不起作用

    如何在 Windows 上的 flutter 桌面上保存和打开文件 getApplicationDocumentsDirectory 不适用于 Windows 应用程序的 flutter 桌面 Future
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un

随机推荐

  • Excel-图表数据标签自定义内容

    想实现的效果是自定义编辑数据标签 xff0c 比如当前选中的数据标签只有数值 xff0c 我想实现的数据标签显示为如 xff1a 16朵 当前状态是 xff0c 只有一种方法 xff0c 就是一次编辑每个数据标签的文本框 xff1a 选中一
  • VB17-Excel导出设置格式

    Range Cells 1 1 Cells 1 Icol 1 Font Name 61 黑体 39 设标题为黑体字 Range Cells 1 1 Cells 1 Icol 1 Font Bold 61 True 39 标题字体加粗 Ran
  • 宝藏下载神器,python一键下载B站视频

    B站无疑是一个宝藏地带 xff0c 作为一个宝藏 xff08 老 xff09 男孩 xff0c 请自行忽略 xff08 老 xff09 字 xff0c B站 xff0c 一个学习的天堂 xff0c 请一定珍惜 xff0c 好好使用 xff0
  • Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销 xff0c 一个昔日辉煌 xff0c 如今没落的广告营销方式 xff0c 曾经的恶意广告邮件群发 xff0c 到现在还存留着的大站协议群发 xff0c 可能还是有不少人能够做到正常群发邮件 xff0c 但大概率很多人都不会点开邮件
  • iOS-UICollectionViewCell自适应文字宽度

    自定义cell pragma mark 自定义cell import 34 SelfSizingCollectCell h 34 import 34 Masonry h 34 define itemHeight 60 64 implemen
  • Linux - Linux下Java安装路径查找;配置Java环境变量

    一 查看Java的安装路径 1 已经安装好了JDK xff0c 也配置了环境变量 1 执行 java version java version 出现了版本号 xff0c 表示安装过了JDK xff0c 配置了环境变量 2 在配置过jdk的情
  • String 转 Enum 对象关键字 Java

    java中 String 字符转成 Enum对象关键字的方法 xff1a 使用valueOf转换
  • 利用select函数实现在Linux环境下实现一个聊天室程序

    C写的 要求 xff1a 用户默认处于广播模式 xff0c 一个客户在其客户端发送的消息 xff0c 其它客户端用户全部可以收到 xff1b 程序支持下列命令 help 显示帮助信息 xff08 思考 xff1a 信息是放在客户端还是服务器
  • 使用UICollectionView做tag显示的时候的对齐方式

    span class token keyword import span span class token builtin UIKit span span class token keyword enum span span class t
  • 字符串切片练习

    获取字符串中汉字的个数 去掉字符串中所有的空格 将字母全部转换为大写和小写 根据标点符号对字符串进行分行 a 61 input 34 请输一串字符 xff1a 34 for i in range 0 len a if a i 61 61 3
  • AngularJs Type error : Cannot read property 'childNodes' of undefined

    一 在AngularJs和JQuery插件共存咋项目中经常会遇到如下异常 html view plain copy Type error Cannot read property 39 childNodes 39 of undefined
  • Go基础入门

    Go vscode配置go开发环境 1 下载vscode https code visualstudio com 2 安装sdk https golang google cn dl 进入这个界面后找到对应版本 go版本 windows am
  • oracle12c常用命令整理

    1 oracle备份方式了解 Oracle的常规备份无非是exp imp expdp impdp rman三种方式 exp imp简单方便 xff0c 适用于跨db版本 跨os平台 异地备份等情况 xff0c 是大家最常用的一种备份方式 e
  • 简述Android手机常用的设备ID

    一 简介 1 设备ID xff1a 简单来说就是一串符号 xff08 或者数字 xff09 类似于我们的身份证号 xff0c 映射现实中硬件设备 排除特殊情况 xff08 模拟器等 xff09 xff0c 设备ID和设备是一一对应的 xff
  • Nuitka将Python源代码编译成可执行文件,注意的地方

    Nuitka的GitHub地址 在Nuitka之前我们最常用的打包工具就是Pyinstaller了 xff0c 但是经过反复考虑 xff0c 我觉得Nuitka也还是很有必要了解记录一下 xff0c 它可以直接将Python源码打包成dll
  • java操作zip压缩文件加密码和解密工具类

    java操作zip压缩文件加密码和解密工具类 lt zip压缩文件工具类 gt lt dependency gt lt groupId gt net lingala zip4j lt groupId gt lt artifactId gt
  • 在CentOS7虚拟机中安装mysql5.7

    写在前面 xff1a 安装环境 xff1a CentOS7虚拟机 xff1b 安装软件 xff1a mysql5 7版本 xff1b 安装时需要切换为root用户权限 安装步骤 xff1a 1 添加官方的yum源 xff0c 创建并编辑my
  • wsl报0x80040326

    今天 开始 运行 wsl 跳出来一个窗口一闪没了 开始 运行 cmd wsl 看到2行报错信息 xff1a Error 0x80040326 Error code Wsl Service CreateInstance 0x80040326
  • VTK笔记——vtkCamera的理解和用法

    其实 xff0c 网上有不少介绍VTK Camera的内容 在3D图形学中 xff0c 相机对于渲染对象来说是必不可少的 我们可以通过它来观察物体 xff0c 包括执行放大缩小 移动相机等操作 xff0c 所以它是我们需要了解的基础和重要的
  • 树莓派4安装Ubuntu20.10桌面版记录(64位系统arm架构desktop版)

    前言 xff1a 这是我在树莓派4上安装Ubuntu20 10桌面版 xff08 64位arm xff09 总结的一些坑 xff0c 欢迎互相交流 xff01 我的博客 xff1a https www 515code com 一 准备 下载