树莓派CM4(三): 定制自己的树莓派镜像
1. 镜像下载
- 使用树莓派最新的镜像Raspberry Pi OS Lite,内核版本6.6
- 下载链接

2. 挂载镜像到ubuntu
上一步下载的树莓派镜像
jun@ubuntu:$ ls
2024-07-04-raspios-bookworm-arm64-lite.img
查看第一个未使用的回环设备
jun@ubuntu:$ losetup -f
/dev/loop0
将树莓派镜像关联到回环设备
jun@ubuntu:$ sudo losetup /dev/loop0 2024-07-04-raspios-bookworm-arm64-lite.img
[sudo] password for jun:
查看分区,检测到两个区,其中较小的是系统分区,较大的是根文件系统
jun@ubuntu:$ sudo kpartx -av /dev/loop0
add map loop0p1 (253:0): 0 1048576 linear 7:0 8192
add map loop0p2 (253:1): 0 4481024 linear 7:0 1056768
创建系统分区挂载目录
jun@ubuntu:$ mkdir boot
创建根文件系统挂载目录
jun@ubuntu:$ mkdir rootfs
挂载系统分区
jun@ubuntu:$ sudo mount /dev/mapper/loop0p1 ./boot/
挂载根文件系统
jun@ubuntu:$ sudo mount /dev/mapper/loop0p2 ./rootfs/
查看系统分区
jun@ubuntu:ig210$ ls ./boot/
bcm2710-rpi-2-b.dtb bcm2710-rpi-zero-2-w.dtb bcm2711-rpi-cm4s.dtb bootcode.bin fixup4db.dat fixup_x.dat kernel8.img start4.elf start_x.elf
bcm2710-rpi-3-b.dtb bcm2711-rpi-400.dtb bcm2712d0-rpi-5-b.dtb cmdline.txt fixup4x.dat initramfs_2712 LICENCE.broadcom start4x.elf
bcm2710-rpi-3-b-plus.dtb bcm2711-rpi-4-b.dtb bcm2712-rpi-5-b.dtb config.txt fixup_cd.dat initramfs8 overlays start_cd.elf
bcm2710-rpi-cm3.dtb bcm2711-rpi-cm4.dtb bcm2712-rpi-cm5-cm4io.dtb fixup4cd.dat fixup.dat issue.txt start4cd.elf start_db.elf
bcm2710-rpi-zero-2.dtb bcm2711-rpi-cm4-io.dtb bcm2712-rpi-cm5-cm5io.dtb fixup4.dat fixup_db.dat kernel_2712.img start4db.elf start.elf
查看根文件系统
jun@ubuntu:ig210$ ls ./rootfs/
bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
3. 自定义系统配置
3.1 使能调试串口
- 修改系统分区下的
config.txt$ cd boot/
boot$ sudo vi config.txt
- 在
config.txt的末尾添加如下内容enable_uart=1

3.2 设置用户名密码
设置用户名为
jun,密码为9在一台已经进入终端的树莓派中执行如下命令,获取密码的密文,如下表示设置密码为
9root@jun:/home/jun# echo 9 | openssl passwd -6 -stdin
$6$tSX0UC/bRp.tzUvf$gqnju1u.BPjPLz1659xUok2GHViNBdcW7D4o4g4tf9xlbVFn4SU2EaV3/0Q02yquTkluWdZBi8sKrB0n3vtaC/
将用户名和密文拼接
jun:$6$tSX0UC/bRp.tzUvf$gqnju1u.BPjPLz1659xUok2GHViNBdcW7D4o4g4tf9xlbVFn4SU2EaV3/0Q02yquTkluWdZBi8sKrB0n3vtaC/
将上一步得到的拼接字符串写入到boot分区的
userconf.txt文件中

3.3 设置主机名
修改根文件系统下的
hostname,修改主机名为junsudo vi rootfs/etc/hostname

修改根文件系统下的
hosts文件,将127.0.1.1对应的主机名也修改为jun

3.4 开启SSH
在
boot分区中创建一个空文件SSH即可boot$ sudo touch SSH
3.5 使能IIC
修改
boot/config.txt,取消dtparam=i2c_arm=on的注释,添加dtparam=i2c_vc=on
修改
rootfs/etc/modules,在其中添加一行i2c-devjun@ubuntu:$ sudo vi rootfs/etc/modules

3.6 使能SPI
- 修改
boot/config.txt,取消#dtparam=spi=on的注释,如果没有这一项,添加之

3.7 使能所有的串口
修改
boot/config.txt,添加如下内容deoverlay=uart0,txd0_pin=14,rxd0_pin=15
dtoverlay=uart2,txd2_pin=0,rxd2_pin=1
dtoverlay=uart3,txd3_pin=4,rxd3_pin=5
dtoverlay=uart4,txd4_pin=8,rxd4_pin=9
dtoverlay=uart5,txd5_pin_12,rxd5_pin=13
3.8 添加Logo
- 在用户登录时显示Logo
- 使用
figlet这个工具可以生成点线图

- 在
rootfs/etc/profile文件末尾添加echo指令,打印点线图Logojun@ubuntu:rootfs$ sudo vi etc/profile
echo -e "\033[0;32m
_____ _____ ____ _____
|_ _| | ____| / ___| |_ _|
| | | _| \___ \ | |
| | | |___ ___) | | |
|_| |_____| |____/ |_| \033[0m\n"
4. 取消挂载镜像
jun@ubuntu:$ ls
2024-07-04-raspios-bookworm-arm64-lite.img boot rootfs
jun@ubuntu:$ sudo umount ./boot
jun@ubuntu:$ sudo umount ./rootfs
jun@ubuntu:$ sudo losetup -d /dev/loop0
5. 镜像烧录
6. 写在最后
禁止转载到CSDN !!! 其它随意,转载请注明出处
树莓派CM4(三): 定制自己的树莓派镜像的更多相关文章
- [原创]树莓派CM4配置GPIO复用为i2c
1.简介 项目中需要控制各种外设的电源,正常应该是通过GPIO进行控制,但是树莓派CM4的GPIO管脚有限,因此需要使用i2c扩展IO 查阅CM4-datesheet发现GPIO22和GPIO23可以 ...
- 树莓派 Learning 002 必备的操作 --- 08 实现PC端 远程登入 树莓派 --- 法1 远程登入树莓派的命令行状态
树莓派 必备的操作 - 实现PC端 远程登入 树莓派 - 法1 远程登入树莓派的命令行状态 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 ...
- Docker 基本概念(三)-生命周期详解(镜像、容器、仓库)
Docker三大组件:镜像.容器.仓库. 一.镜像 1 从仓库获取镜像 #一.从仓库获取镜像,帮助命令:docker pull -help 命令:docker pull [选项] [docker R ...
- 【树莓派】在vscode中连接树莓派并编写代码
在树莓派里编写代码的话会比较麻烦因此可以在vscode中通过ssh连接树莓派并且编辑代码 参考: vscode通过ssh连接树莓派实现远程开发 VSCODE 远程开发树莓派 使用vscode打造pyt ...
- 第三篇——第二部分——第三文 配置SQL Server镜像——域环境
原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 ...
- 树莓派3B+(三)
上一篇中,我们配置好了基本的raspbain系统,接下来我们可以用xrdp或者vnc在Windows上远程连接树莓派. 一.安装xrdp xrdp和vnc是两种常见的远程桌面协议,可以进行可视化界面远 ...
- 【树莓派】【网摘】树莓派与XBMC及Kodi、LibreELEC插件(三)
之前的相关文章参考: [树莓派]树莓派与XBMC及Kodi.LibreELEC插件(一) [树莓派]树莓派与XBMC及Kodi.LibreELEC插件(二) [树莓派]树莓派与XBMC及Kodi.Li ...
- 玩转树莓派《三》——Scratch
今天大姨妈折磨了一整个白天,稍微好点,现在打开实验楼,看到有个朋友回答了关于ubuntu上面操作SQL 的时候到处数据到txt文件,被批评没有思考问题,或许吧,虽然那个权限我现在想起确实是可读可写的, ...
- 树莓派CM4 wifi频繁断开连接
CM4核心板上自带的wifi模块连接上华为/小米的路由器5G热点以后,会频繁断开连接,断开连接前使用 iw dev 查看wifi信息如下: phy#0 Unnamed/non-netdev inter ...
- 树莓派项目(三) 数字识别树莓派3+python3.5+opencv3.3+tensorflow1.7+keras
https://blog.csdn.net/weixin_40707450/article/details/80290705
随机推荐
- Django-缓存、信号与序列化
缓存 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...
- uCos 学习:0-有关概念
先说一下UCOSIII:Micrium在2009年推出了UCOSIII,相对于之前的UCOSII版本,在性能上有了进一步的提升,主要是支持时间片轮调度,极短的关中断事件等. 可剥夺多任务管理: 什么是 ...
- 详解Web应用安全系列(5)敏感数据泄露漏洞
在最近几年,这是最常见的,最具影响力的攻击.这个领域最常见的漏洞是不对敏感数据进行加密.在数据加密过程中,常见的问题是不安全的密钥生成和管理以及使用弱密码算法,弱协议和弱密码.特别是使用弱的哈希算法来 ...
- win10: pyinstaller在python2和python3环境下的适应性配置
win10:pyinstaller在python2和python3环境下的适应性配置 前言 pyinstaller是一个非常优秀的python可执行程序打包工具,在windows下打包成.exe文件, ...
- Bond——大数据时代的数据交换和存储格式
设想我们在一家很大的互联网公司做IT方面的规划.开发和维护,有以下这样的应用场景: 公司里有若干个不同的开发团队,开发语言有Java..net.Python.C++....十来种,还有很多外包团队对项 ...
- MQ和RabbitMQ
一.微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题: 1.耦 ...
- VirtualBox中Ubuntu 22.04 Server支持kvm
kvm简介 KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术. 使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机. K ...
- 深入理解 React 的 useSyncExternalStore Hook
深入理解 React 的 useSyncExternalStore Hook 大家好,今天我们来聊聊 React 18 引入的一个新 Hook:useSyncExternalStore.这个 Hook ...
- IPv6、双栈与隧道
双栈策略 实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈.具有双协议栈的结点称作"IPv6/v4结点",这些结点既可以收发IPv4分组,也可以 ...
- [oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
teletypewriter 历史 回忆上次内容 上次见到了一个真的机械打字机 感受到了蒸汽朋克的时代背景 上上次区分了一些概念 terminal终端,电脑连线最终的端点 TeleTYpewriter ...