树莓派镜像备份/内核编译和更换/EC200U上网

2023-11-03

树莓派镜像备份/内核编译和更换/EC200U上网

文章目录

操作涉及树莓派linux内核替换,由于我的树莓板子里跑了ROS,以免环境破坏,所以先进行镜像备份。

备份本机树莓派img

工具:win32diskimager-1.0.0-install.exe

全卡备份

  1. 安装工具win32diskimager-1.0.0-install.exe
  2. 硬盘中新建后缀名为img的空文件
  3. 打开 Win32DiskImager,选择刚刚创建的空img 文件和 SD 卡盘符,
  4. 点击 read 既可,一般需要13分钟左右

image-20220922151325643

原理:将SD卡中文件打包读取到*img中
image-20220922153129897

树莓派 linux内核编译

交叉编译工具链的下载安装

地址:https://github.com/raspberrypi/tools

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2711_defconfig

安装必要软件

更新系统下载源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

sudo vim /etc/apt/sources.list

#阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse


安装必要软件
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
sudo apt-get install build-essential
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libssl-dev
编译前配置defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 bcm2711_defconfig

编译
make  ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7  -j4 zImage modules dtbs

说明:
j4 指定多少core进行编译,根据自己电脑性能来
zImage 内核镜像。
modules 生成驱动模块。
dtbs 生成配置文件。

驱动makefile

**modules:
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules**

说明:
$:美元符号是引用变量定义值;
$(MAKE) : 指make命令;
-C: 指内核位置。
M:指定模块源码目录,M编译的会生成*.ko; 后期可以通过inmod *ko 安装

树莓派更换linux 内核

安装交叉编译链

//64bit 的
sudo apt install crossbuild-essential-arm64

下载源码(选择自己需求版本)

https://github.com/raspberrypi/linux

编译

//通过 find . -name *_defconfig,板子配套的_defconfig,这里是bcm2711_defconfig

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL=kernel8  bcm2711_defconfig

make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL=kernel8  Image modules dtbs

替换sd卡中系统

挂在sd卡分区
创建目录
mkdir /home/hbwang/pi/data1           //fat32分区 boot、img等

mkdir /home/hbwang/pi/data2           //ext4 分区 rootfs、modules等

sudo mount /dev/sdb1 /home/hbwang/pi/data1 
sudo mount /dev/sdb2 /home/hbwang/pi/data2
//zImage时需要转换img

./scripts/mkknlimg arch/arm64/boot/zImage ./kernel8.img

拷贝modules、img、dts等到sd卡
sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL=kernel8 INSTALL_MOD_PATH=/home/hbwang/pi/data2 modules_install

sudo cp arch/arm64/boot/Image /home/hbwang/pi/data1/kernel8.img

sudo cp arch/arm64/boot/dts/broadcom/*.dtb /home/hbwang/pi/data1
sudo cp arch/arm64/boot/dts/overlays/.*dtb* /home/hbwang/pi/data1/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /home/hbwang/pi/data1/overlays/
卸载挂载的sd卡
sudo umount  /home/hbwang/pi/data1

sudo umount  /home/hbwang/pi/data2
插入树莓派启动

通过终端查看设备是否启动成功。

树莓派使用移远4G模块EC200U上网

4G模块ping ppp0不能上网需要增加默认路由

sudo route add default dev ppp0

sudo route add default gw 10.64.64.64

4g和树莓派连接方式

使用4g 模块的usb和树莓派usb口连接,而不是使用4g模块的uart 排线连接

借助wvdial方式ppp0

安装文件工具

sudo apt-get install wvdial

查看是否有EC200U模块

lsusb
image-20220923113410695

VID 和 PID 信息添加
sudo modprobe option

//ec200u
sudo sh -c 'echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id'

//ec20
sudo sh -c 'echo "2c7c 0125" > /sys/bus/usb-serial/drivers/option1/new_id'

q \r\n

原理:树莓派是自带option驱动的,向sys/bus/usb-serial/drivers/option1/new_id这个文件添加 VID 和 PID 信息后,Linux 会在/dev 目录下创建多个名称如 ttyUSB0-6的串口设备文件

编写wvdial.conf
sudo vim /etc/wvdial.conf

[Dialer lan1]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0
使用IPV4,建立连接,联通为3gnet,移动为cmnet
Init3 = AT+CGDCONT=1,"IP","3gnet"
Modem Type = Analog Modem
Baud = 115200
New PPPD = yes
Modem = /dev/ttyUSB0
ISDN = 0
# 拨号,*99#是联通的拨号号码,*98*1#是移动
Phone = *98*1#
Password = card
Username = card
Auto DNS = on
启动

sudo wvdial lan1

image-20220923114320891

增加默认路由

sudo route add default dev ppp0

AT+QCFG=“usbnet”,1 \r\n

测试

ping www.baidu.com -I ppp0

image-20220923114234186

自己写命令方式ppp0

可参考以下博文

https://blog.csdn.net/weixin_45880057/article/details/125747029,感谢博主分享。

杂记(仅供自己备忘)

    工作指示灯如下表所示:

LED2 电源指示灯 正常供电亮红色
LED1 模块状态指示灯 模块正常亮绿灯
LED3 网络指示灯 慢闪(200ms 高/1800ms 低) 找网状态
慢闪(1800ms 高/200ms 低) 待机状态
快闪(125ms 高/125ms 低) 数据传输模式
高电平 通话中

配置usb

AT+QCFG=“usbnet”,1

重启

AT+CFUN=1,1

查询配置成功

AT+QCFG=“usbnet”

AT+CGDCONT=1,"IPV4V6","3gnet"
AT+CGDCONT=1,"IP","ctnet"

发短信:

AT+CMGF=1 //设置短消息模式为文本模式。
OK
AT+CSCS=“GSM” //设置 TE 输入字符集格式为 GSM 格式。
OK
AT+CMGS=“电话号码”

This is a test from Quectel //输入短消息内容,Ctrl+Z 发送,ESC 退出发送。
+CMGS: 247

OK

打电话:

ATD10086; //拨号。

ATD 电话号码

OK

AT+CHUP //挂断通话。
OK

AT+CGPADDR显示PDP地址

AT+CGPADDR

+CGPADDR: 1,“100.30.3.158”

+CGPADDR: 2,“0.0.0.0,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”

OK

AT+CGPAD

ERROR

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

树莓派镜像备份/内核编译和更换/EC200U上网 的相关文章

  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library

随机推荐

  • 配置SSH Key连接GitLab

    Git配置ssh连接相关命令 1 配置账号 git config global user name cwh git config global user email cwh xxx com 邮箱需要GitLab上账号配置相对应的邮箱 否则拉
  • 2022年「博客之星」参赛博主:落寞的魚丶

    诚信五星 五星必回 https bbs csdn net topics 611387242 spm 1001 2014 3001 6377 诚信五星 五星必回
  • noip 2008 双栈排序

    题目大意 给定n和一串数字 这串数字是一个1 n的排列 现在要用两个栈给这些数字排序 首先先判断是否有解 有解的话再输出字典序最小的方案 入栈1 输出a 出栈1 输出b 入栈2 输出c 出栈2 输出d 分析 首先必然要先考虑是否有解 对于没
  • 国产超低功耗华大MCU资料汇总

    华大单片机最新最全内容请访问 芯虎论坛 http tigerchip com cn 目录 点击直接跳转 开发工具下载 离线编程器 仿真器 MDK IAR 选型表 封装库 芯片资料 HC32F003 HC32F005 HC32L110 HC3
  • tree.plot_tree()函数里面具体的参数作用

    sklearn tree plot tree decision tree max depth None feature names None class names None label all filled False impurity
  • STM32通用定时器的个人总结

    STM32104ZET6系列的芯片中 定时器一共有一下三种分类 高级定时器 通用定时器 基本定时器 这里主要讲一下通用定时器 首先 计数器模式一共有三种 分别为向上 向下或向上向下计数 其中 向上计数的通俗意思就是 计数器从0开始计数 一直
  • 如何找出U盘中隐藏的文件夹

    背景 这周二我们老师说我一个问题就是 说她的U盘里有一大堆东西但是打开U盘的时候显示为空 这个问题困扰了她好长时间 解决办法 第一步 用电脑管家杀毒 打开电脑管家 然后点击 病毒查杀 之后点击指定位置杀毒 杀毒位置为U盘所在盘符 首先排除了
  • Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 解决方法

    有时用apt安装软件 莫名中断会导致apt被lock 接着再用apt就会报错 E Could not get lock var lib dpkg lock open 11 Resource temporarily unavailable E
  • Transformer代码讲解(最最最最......详细)

    Transformer代码讲解 最最最最 详细 整个代码主要分为两部分去讲解 一 完整代码 二 部分代码剖析 1 主函数if name main 2 从整体网路结构来看 分为三个部分 编码层 解码层 输出层 3 Encoder 部分包含三个
  • 解决IE 浏览器无法访问网站的问题

    今天电脑不知道咋地 一直访问不了网站 访问什么网站都报无法访问 如下图所示 经过几分摸索 发现是DNS的问题 通过设置IE浏览器可以自动设置 按照下面步骤设置即可 1 打开IE浏览器右上角的齿轮 2 选择 Internet 选项 3 选择
  • C++ win平台路径管理类

    ifndef PATH MANAGER H define PATH MANAGER H include
  • oracle 11g收集多列统计信息详解

    我们在写SQL语句的时候 有的时候会碰到where子句后面有多个条件的情况 也就是根据多列的条件筛选得到数据 下面这篇文章主要给大家介绍了Oracle 11g收集多列统计信息的相关资料 文中介绍的非常详细 需要的朋友可以参考下 前言 通常
  • verilog中带符号数据的赋值问题(记录)

    记录今日新发现 关于带符号数据的赋值问题 在组合逻辑中 等号两端数据type类型要相同 即同为signed型或unsigned型 在时序电路中 等号两端数据type类型可以不同 signed或unsigned都可以 wire 1 0 a b
  • steam战舰世界网站服务器无法使用,Steam上最刚游戏!玩家不套路见面就是干,被称作EVE版战舰世界!...

    大家好 我是X博士 喜欢太空科幻题材的玩家 应该都有接触过 EVE 这款经典大作 但苦于这款游戏过于高深 大部分玩家在体验过前期的内容就将其束之高阁 虽然心里上对这款游戏表示十分敬佩 但身体却是告辞的姿势 那么 有没有一款既有类似 EVE
  • 关于mybatis in排序的处理方案

    出现场景 有时候我们想在mybatis里面使用in 功能是可以实现 但是查询出来的顺序确不是我们想要的 方案1 当我们使用in时 我们为了让它按着in 里面的顺序查询出来 可以在mybaits里面使用field 代码如下 select ds
  • 一种解决滑动事件和点击事件冲突的方法

    此博文意在为解决滑动和点击事件的冲突问题提供一种解决思路 如 侧滑删除布局和item的点击事件无法共同有效的问题 解决办法 点击事件不要使用onCLick而是在OnTouch 的MotionEvent ACTION UP中判断 如果左右滑动
  • VirtualBox安裝Android-x86 4.0

    为什么Android虚拟机比iOS和WP7的虚拟机要慢很多呢 原因如下 1 Android 模拟器模拟的是 ARM 的体系结构 arm eabi 而 iOS 和 WP7 的模拟器的目标体系结构都是 x86 的 另外 iOS 的模拟器中运行的
  • Python求最大公约数与最小公倍数的方法

    最大公约数 对于最大公约数求解 个人最喜欢辗转相除法和辗转相减法 1 辗转相除法 想对传入的两个数进行排序 大的数对小的数取余 什么时候取余为0 什么时候返回小的那个数即可 具体写法如下 def biggest common divisor
  • XSS-labs靶场过关秘籍(level 5-8)

    xss labs靶场过关秘籍 level 5 8 level 5 打开靶场 在输入框中使用测试xss注入代码进行测试 查看网页源码对
  • 树莓派镜像备份/内核编译和更换/EC200U上网

    树莓派镜像备份 内核编译和更换 EC200U上网 文章目录 树莓派镜像备份 内核编译和更换 EC200U上网 备份本机树莓派img 全卡备份 树莓派 linux内核编译 交叉编译工具链的下载安装 安装必要软件 更新系统下载源 安装必要软件