在树莓派计算模块CM4上安装Ubuntu Server 20.04

news/2025/1/12 3:55:35/

陈拓 2021/10/26-2021/12/09

1. 概述

Ubuntu Server 21.10只支持到2022年7月,而20.04支持到2025年4月。如果做产品开发还是选择20.04版好一些。

2. 硬件配置

  • CM4

4GRAM,Lite(无cMMC),带WiFi模块

  • CM4扩展板

  • 扩展板资源

 

这样的配置,大小和Raspberry 4B一样,性价比远高于Raspberry 4B。

3. 下载Ubuntu 20.04.3

https://ubuntu.com/download/raspberry-pi

选择Ubuntu Server20.04.3 LTS下载:

解压:

4. 下载工具和系统安装

和《电脑连接树莓派3B+》一文相同。

https://blog.csdn.net/chentuo2000/article/details/103332186

注意:和官方的Raspbian系统不同,Ubuntu系统不需要创建ssh空文件。

5. 启用USB

根据官方说明,CM4为了降低功耗,USB接口默认是关闭的,需要手工打开。

  • 在Windows PC上查看文件资源管理器

这时系统多出了一个盘符system-boot(F:)

  • 修改usercfg.txt文件

在system-boot中找到usercfg.txt文件,可以用记事本打开,在最后一行添加

dtoverlay=dwc2,dr_mode=host

保存退出。

注意:不要直接改config.txt文件,而是修改usercfg.txt文件,在config.txt文件中有相关的说明。

弹出system-boot(F:)。

6. 开机启动配置

6.1 基本设置

  • 把掉USB线
  • 接上显示器,插好键盘

如果没有显示器可以用参考文档中的方法配置。

  • 在PC和CM4之间连接网线
  • 将在扩展板上插好TF卡。
  • 用USB线连接电源和TYPE C接口,上电开机
  • 登录

第一次登录的用户名和密码都是 ubuntu

之后系统要求你更改密码,先输入当前密码ubuntu,再输入新密码2次。

登录普通用户:

ubuntu@ubuntu:~$

6.2网络设置

  • 设置固定ip地址

修改默认的网卡配置文件

修改之前:

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml-bak

sudo nano /etc/netplan/50-cloud-init.yaml

network:ethernets:eth0:dhcp4: falseaddresses: [192.168.137.2/24]optional: truegateway4: 192.168.137.1nameservers:addresses: [192.168.137.1,114.114.114.114]version: 2
  • 验证

sudo netplan try

回车。

  • 刷新

sudo netplan apply

  • 查看ip地址

ip a

  • 测试

ping 192.168.137.1

7.3 外网配置

在PC上操作。

打开网络和共享中心

点击“以太网”,设置IP地址:

确定,回到网络和共享中心,点击“WLAN”:

设置“共享”:

测试,回到树莓派上:ping www.baidu.com

可以上外网。

7. 远程登录

在PC上打开Win10 命令窗口,输入:

ssh ubuntu@192.168.137.2

如果出现:

这是因为重新安装过系统,输入下面的命令解除:

ssh-keygen -R 192.168.137.2

再登录:

登录成功。

  • 查看存储空间使用情况

8. 速度测试

  • IO写速度

time dd if=/dev/zero of=test.dbf bs=8k count=300000

上面是TF卡的IO写速度。

下面是eMMC的IO写速度:

  • IO读速度

dd if=test.dbf bs=8k count=300000 of=/dev/null

上面是TF卡的IO读速度。

下面是eMMC的IO读速度:

测试完记得删除test.dbf文件,很大。

从上面可以看出TF卡的写入速度很慢,读取速度很快,甚至比eMMC还快。带cMMC的CM4高出的成本足可以配一个128G的固态硬盘,性能比eMMC更好。

9. 挂载固态硬盘

  • 显示硬盘的设备文件名

sudo fdisk -l

fdisk不支持gpt,用parted对gpt磁盘操作。

gpt无分区限制,故只有主分区,无扩展分区和逻辑分区。分区直接按容量算,不按柱面算。

  • 进入parted交互

sudo parted /dev/nvme0n1

  • 查看分区表

无分区。

  • 创建分区并设置分区大小

(parted) mkpart primary 0 256G

主分区,从0到256G

警告:结果分区未正确对齐以获得最佳性能:34s % 2048s != 0s

输入C取消。

按照提示输入:

(parted) mkpart primary 2048s 100%

成功。

  • 退出parted交互

(parted)q

  • 查看分区设备名称

ls -l /dev/nvme0n1*

sudo fdisk -l

  • 格式化分区为EXT4文件系统

sudo mkfs.ext4 /dev/nvme0n1p1

  • 新建目录

mkdir ~/ssd

  • 挂载

sudo mount /dev/nvme0n1p1 ~/ssd

  • 修改权限

sudo chown -R ubuntu:ubuntu ssd

  • 查看磁盘容量

df -hl

  • 设置固态硬盘自动挂载

在/etc/fstab文件最后一行写:

/dev/nvme0n1p1 /home/ubuntu/ssd ext4 defaults 0 0

sudo nano /etc/fstab

10. Ubuntu修改时区和更新时间

见《Ubuntu修改时区和更新时间》

https://blog.csdn.net/zhengchaooo/article/details/79500032

  • 查看

date -R

设置东八区时区。

  • 运行tzselect

sudo tzselect

选择亚洲 4) Asia,再选择中国9) China,最后选择北京1) Beijing Time

1) yes

  • 修改~/.profile文件

添加

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

到~/.profile文件的最后一行:

nano ~/.profile

刷新

source ~/.profile

以后每次在系统启动时会执行。

  • 再次查看时间date -R,已经修改为北京时间

11. 外接显示屏调节分辨率

https://elinux.org/RPiconfig

https://elinux.org/R-Pi_configuration_file

https://forums.raspberrypi.com/viewtopic.php?f=29&t=24679

LCD显示屏,DHMI接口,7寸,15.5x8.5cm ,下面通过usercfg.txt调节。

执行命令:

sudo nano /boot/firmware/usercfg.txt

config_hdmi_boost=4

hdmi_group=2

hdmi_mode=87

hdmi_cvt 800 480 60 6 0 0 0

参数说明:

  • config_hdmi_boost=4

HDMI信号强度,默认为0,最大为7

  • hdmi_group=2

使用DMT格式,这是计算机计算机显示器使用的分辨率。

  • hdmi_mode=87

https://forums.raspberrypi.com/viewtopic.php?f=29&t=24679

87是自定义模式

  • hdmi_cvt 800 480 60 6 0 0 0

自定义模式参数设置:

hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>

width        width in pixels

height       height in pixels

framerate    framerate in Hz

aspect       aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9

margins      0=margins disabled, 1=margins enabled

interlace    0=progressive, 1=interlaced

rb           0=normal, 1=reduced blanking

12. 配置WiFi

  • 查看WiFi接口

iw dev

  • 查看无线接口wlan0的连接状态

iw wlan0 link

sudo ip link show

  • 动态WiFi的IP地址设置

sudo nano /etc/netplan/50-cloud-init.yaml

network:ethernets:eth0:dhcp4: falseaddresses: [192.168.137.2/24]optional: truegateway4: 192.168.137.1nameservers:addresses: [192.168.137.1,114.114.114.114]wifis:wlan0:dhcp4: trueaccess-points:"1503": password: 'xxxxxxxx'
version: 2

重启系统:

  • 再查看无线接口wlan0的连接状态

iw wlan0 link

  • 固定WiFi的IP地址设置

sudo nano /etc/netplan/50-cloud-init.yaml

network:ethernets:eth0:dhcp4: falseaddresses: [192.168.137.2/24]optional: truegateway4: 192.168.137.1nameservers:addresses: [192.168.137.1,114.114.114.114]wifis:wlan0:dhcp4: falseaddresses: [192.168.0.8/24]gateway4: 192.168.0.1nameservers:addresses: [192.168.0.1,114.114.114.114]access-points:"1503":password: "xxxxxxxx"
version: 2

重启系统:

参考文档

  1. Basic Setup of Ubuntu Server 204 on Raspberry Pi4
    https://friendsoflittleyus.nl/basic-setup-of-ubuntu-server-21-04-on-raspberry-pi4/
  2. 树莓派ARM开发板使用TF卡启动和系统安装到EMMC启动,硬盘存储读写速度对比测试
    http://ourjs.com/detail/5d7056fc5109465a49578948
  3. 一起来学linux:网络命令
    https://www.cnblogs.com/zhanghongfeng/p/7689300.html


http://www.ppmy.cn/news/625353.html

相关文章

树莓派计算模块CM4 eMMC系统烧写、配置、相机连接

文章目录 1、系统安装1.1、安装 rpiboot 程序1.2、烧写树莓派系统1.3、开机测试 2、其他设置2.1、开启USB功能2.2、开启风扇2.3、外置天线2.4、PCIe Gen 2x1 socket 3、树莓派相机连接3.1、树莓派相机&#xff08;单相机&#xff09;3.2、树莓派相机&#xff08;双路相机&#…

树莓派CM4安装系统

树莓派CM4安装系统 前言工具准备硬件软件安装rpiboot程序格式化SD卡烧写树莓派系统工具 将ubuntu mate 20.04烧录到带eMMc的CM4上ubuntu mate 20.04 新镜像烧录失败ubuntu20.04 旧镜像&#xff08;自行制作的镜像&#xff09;烧录树莓派cm4 ubuntu mate 20.04 wifi 不能使用 ub…

树莓派CM4基于emmc安装Ubuntu系统及初始配置

文章目录 安装前准备CM4安装系统参考资料 安装前准备 ​ 在树莓派官方手册CM板卡介绍中说明&#xff0c;开发板的供电电压为DC12V或5V。 ​ 为了保证开发板USB接口的正常使用&#xff0c;开发板的供电电流应&#xff1e;1.2A。 CM4安装系统 补充说明&#xff1a;Ubuntu18.04…

逆向工程第005篇:跨越CM4验证机制的鸿沟(下)

一、前言 本文是逆向分析CM4系列的最后一篇&#xff0c;我会将该游戏的序列号验证机制分析完毕&#xff0c;进而编写出注册码生成器。 二、分析第二个验证循环 延续上一篇文章的内容&#xff0c;来到如下代码处&#xff1a; 图1 上述代码并没有特别需要注意的地方&#xff0c;…

Selenium教程__截图(16)

selenium截图有两种方式 截取全屏 get_screenshot_as_file(filename)&#xff1a;将截图转化成文件保存到本地&#xff0c;filename为保存的文件路径get_screenshot_as_base64()&#xff1a;将截图转化成base64get_screenshot_as_png()&#xff1a;将截图转化成png 截取指定元…

leetcode算法题--特别的排列

本题是一个状态压缩dp 一开始尝试用普通的dp去做&#xff0c;但是超时了 func specialPerm(nums []int) int {visited : make(map[int]bool)return dfs(nums, visited, 0, 0) }func dfs(nums []int, visited map[int]bool, idx, lastNum int) int {res : 0mod : int(math.Pow…

Intellij IDEA detected unusually high memory use

一、IDEA如图 二、解决 2.1 修改IDEA的内存堆 运行IntelliJ IDEA的Java虚拟机&#xff08;JVM&#xff09;分配一些预定义的内存量。默认值取决于平台。如果您遇到速度减慢&#xff0c;可能需要增加内存堆。 为运行IDE分配的堆大小与编译应用程序的堆大小不同。如果要为编译代…

demjson报错:

python demjson 库 报错&#xff1a;AttributeError: dict object has no attribute has_key Traceback (most recent call last):File "/root/github/stock/fund/stop_purchase_lof_fund.py", line 82, in fund_purchase_emdata_json demjson.decode(data_text.st…