Categories
linux

emmc烧写后 文件系统扩容

lsblk                         # 查看磁盘和分区信息
df -h                         # 查看文件系统使用情况

输出

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0   64G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0    8G  0 part /         # 仅用了 8G,剩余空间未分配

/ 代表的就是跟文件系统分区 要扩容就是这个分区扩容

sudo resize2fs /dev/mmcblk0p2  # 扩展 ext4 文件系统
Categories
linux

rootfs.img 修改root账号密码 并设置允许ssh访问

sudo mount -o loop rootfs.img ~/mount_dir

挂载镜像到某个目录

修改root账号密码

sudo vim /etc/shadow

修改密码文件

root:!:19475:0:99999:7:::

!或*代表该账号无法登录

数据段说明

用户名:加密密码:最后修改时间:最小密码年龄:最大密码年龄:警告期:不活动期:过期时间:保留字段
mkpasswd -m sha-512

执行该命令然后输入密码 替换上面的加密密码段

修改ssh配置允许root访问

/etc/ssh/sshd_config

修改配置文件

PermitRootLogin yes  # 修改后重启 SSH 服务:sudo systemctl restart sshd

设置允许root 密码登录

Categories
linux

uboot kernel rootfs 关系

在嵌入式Linux系统中,U-Boot、Kernel(内核)和Rootfs(根文件系统) 是三个核心组件,它们分工协作,共同完成系统启动和运行。以下是它们的相互关系和作用:


1. U-Boot(Bootloader)

  • 作用:硬件初始化、引导加载内核。
  • 功能
    • 初始化CPU、内存、时钟等硬件。
    • 提供交互式命令行(可选),用于调试或配置启动参数。
    • 从存储设备(如eMMC、SD卡、Flash)加载内核镜像(zImageuImage)和设备树(dtb)到内存。
    • 传递启动参数(如根文件系统位置、控制台设备等)给内核。
  • 输出:将控制权移交内核。

2. Kernel(Linux内核)

  • 作用:管理系统硬件资源、提供核心服务。
  • 功能
    • 进一步初始化硬件(如驱动加载、中断管理)。
    • 挂载根文件系统(Rootfs)到 / 目录。
    • 启动用户空间的第一个进程(通常是 init 或 systemd,PID=1)。
  • 依赖:需要U-Boot正确加载内核镜像,并传递正确的启动参数(如root= 指定Rootfs位置)。

3. Rootfs(根文件系统)

  • 作用:提供用户空间环境和应用程序运行基础。
  • 内容
    • 系统工具(如/bin/sbin)。
    • 配置文件(如/etc)。
    • 库文件(如/lib)。
    • 用户程序(如/usr)。
  • 挂载时机:由内核根据启动参数(如root=/dev/mmcblk0p2)挂载。
  • 关键文件/sbin/init 或 /lib/systemd/systemd(第一个用户进程)。

三者的协作流程

  1. 硬件上电 → U-Boot执行,初始化硬件。
  2. U-Boot 加载内核镜像和设备树到内存,传递参数(如console=ttyS0 root=/dev/nfs)。
  3. 内核 启动,解压自身并初始化子系统(进程调度、驱动等)。
  4. 内核 挂载Rootfs(从Flash、NFS、RAM等设备)。
  5. 内核 启动Rootfs中的init进程,进入用户空间,完成系统启动。

关键依赖关系

  • U-Boot依赖:需适配硬件(如DDR初始化代码、存储驱动)。
  • 内核依赖:需匹配硬件架构(如ARM/X86)和U-Boot传递的参数。
  • Rootfs依赖:需包含内核驱动的对应模块(如文件系统驱动、设备节点)。

常见问题

  • 启动失败:若U-Boot未正确加载内核,系统无法启动。
  • 内核恐慌(Kernel Panic):通常因找不到或无法挂载Rootfs。
  • Rootfs损坏:系统可能启动但无法进入用户空间(如/bin/sh缺失)。

类比理解

  • U-Boot:像电脑的BIOS,负责“唤醒”硬件。
  • Kernel:像操作系统内核,管理硬件和资源。
  • Rootfs:像C盘的Windows系统文件,提供运行环境。

通过三者协同,嵌入式系统从硬件上电到完整启动,最终运行应用程序。

Categories
linux

设置静态IP

一般通过命令nmtui设置

Categories
linux

linux 硬盘管理常用命令

dd

硬盘复制用命令 镜像复制命令

例子

sudo dd if=openwrt-image.img of=/dev/mmcblk0 bs=4M status=progress
复制当前目录下 openwrt-image.img 镜像  到/dev/mmcblk0 的硬盘

sudo dd if=/dev/mmcblk1 of=/dev/mmcblk0 bs=4M status=progress
将/dev/mmcblk1整个硬盘复制到/dev/mmcblk0  /dev/mmcblk0容量大于/dev/mmcblk1

sudo dd if=/dev/zero of=/dev/mmcblk0 bs=4M status=progress
清空控盘内容(全写0)

fdisk

管理查看硬盘分区信息

例子

sudo fdisk /dev/mmcblk0  
然后会进入硬盘命令行子命令交互空间

df

查看硬盘占用情况

df ./
展示当前目录所在硬盘分区占用情况

df -h
展示系统硬盘分区占用情况  包括挂载点信息

mount

挂载分区到某个挂载点

sudo mount /dev/mmcblk0p2 /mnt
其实一般当自动插入sd卡 或者USB就会自动挂载到这里
但是要改变挂载方式(可读可写) 就要先卸载在挂载

sudo mount -o rw /dev/mmcblk0p2 /mnt
增加-o rw 即为可读可写

umount

卸载分区

sudo umount /dev/mmcblk0p2

ln

这个命令可以为文件夹和文件设置硬链接和软连接

个人更加推崇软连接(硬链接是硬盘级别内部的连接 不能跨硬盘,软连接可以)

ln -s /path/to/source /path/to/destination

/etc/fstab

这个文件用来设置文件系统自动挂载

sudo blkid
列出系统所有分区的uuid

/etc/fstab 添加一行

UUID=1234-5678 /mnt ntfs rw 0 0

UUID=1234-5678:替换为你在步骤 1 中获取的 UUID。
/mnt:替换为你创建的挂载点。
ntfs:替换为你的文件系统类型(例如 ext4、ntfs 等)。
rw:默认挂载选项,包括 rw(读写)、suid、dev、exec、auto、nouser 和 async。
0 0:表示不进行备份和不进行文件系统检查。

Categories
linux

香橙派 OPI.GPIO

一般GPIO初始化是执行

GPIO.setmode(mode) #来进行引脚定义初始化

GPIO.BOARD = 10
GPIO.BCM = 11
GPIO.SUNXI = 12 
GPIO.CUSTOM = 13  

其实只是一你骄傲的映射关系 没有真正执行任何代码

但是OPI.GPIO 对不同的香橙派版本 引脚定义不充分

CM4为例子

GPIO.setmode(GPIO.BOARD) #会少了很多引脚的映射

C:\Users\15699\AppData\Local\Programs\Python\Python312\Lib\site-packages\OPi\pin_mappings.py

 BOARD: {
        3: 12,
        5: 11,
        7: 6,
        8: 198,
        10: 199,
        11: 1,
        12: 7,
        13: 0,
        15: 3,
        16: 19,
        18: 18,
        19: 15,
        21: 16,
        22: 2,
        23: 14,
        24: 13,
        26: 10
    },

这时候要不更改这个库文件 按照GPIO.readall 补充所有引脚映射

要不执行 自定义引脚映射初始化

GPIO.setmode({
        3: 140,
        5: 141,
        7: 147,
        8: 25,
        10: 24,
        11: 118,
        12: 119,
        13: 128,
        15: 130,
        16: 131,
        18: 129,
        19: 138,
        21: 136,
        22: 132,
        23: 139,
        24: 134,
        26: 135,
        27: 32,
        28: 33,
        29: 133,
        31: 124,
        32: 144,
        33: 127,
        35: 120,
        36: 125,
        37: 123,
        38: 122,
        40: 121
    })

GPIO.getmode 
# 返回CUSTOM 自定义引脚映射
Categories
linux

树莓派 电源固件升级问题

树莓派论坛提到

https://forums.raspberrypi.com/viewtopic.php?t=361383

升级方法

Tue Dec 12, 2023 5:44 pm

3B+ v1.4 has a new PMIC and needs Sept 2021 or newer firmware.

Follow https://pip.raspberrypi.com/categories/ ... 6-WP-1.pdf to update the firmware in your image.

树莓派更换了新的PMIC(电源管理芯片)

https://pip.raspberrypi.com/categories/685/documents/RP-003476-WP/RP-003476-WP-1.pdf

该PDF有说明最新固件情况

Updating only the firmware

Sometimes, going through the standard upgrade procedure may not be possible. For example, you may have acustomised distribution with no update facilities, or that cannot be upgraded without causing further issues. In thesecircumstances, and possibly others, you will need to update the firmware files in the distribution manually.You can download the firmware files from the following location:

https://github.com/raspberrypi/firmware/archive/refs/heads/stable.zip

This zip file contains a number of items, but the ones we are interested in at this stage are in the boot folder.

The firmwarefiles have names of the form

start*.elf, and their associated support files are fixup*.dat.

The basic principle is to copy the required start and fixup files from this zip file to replace the same named files in thedestination OS image.

The exact process will depend on how the OS has been set up, but this is an example of how itwould be done for a Raspberry Pi OS image:

1. Extract or open the zip file so you can access the required files.

2. Open up the boot folder in the destination OS image (this could be on an SD card, or a disk-based copy).

3. Determine which start.elf and fixup.dat files are present in the destination OS image.

4. Copy those files from the zip archive to the destination image.The image should now be ready for use on the latest Raspberry Pi Ltd hardware.

其实就是下载最新固件包 在压缩包里打开boot目录

替换start*.elf 和 fixup*.dat.

当然命令行系统 用的是start.elf fixup.dat

桌面系统用的是 start_x.elf fixup_x.dat

Categories
linux

Raspbian OS

全量搜索地址 清华开源镜像网站

https://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os-images/

Categories
linux

树莓派 配置自启动桌面程序

利用aotostart 目录进行配置

创建设置文件/home/pi/.config/autostart/map2output.desktop,如果autostart目录不存在就自己创建。

文件内容如下:

[Desktop Entry]


Type=Application

Name=map2output


Exec=/home/rock/map.sh  #执行脚本

Categories
linux Uncategorized

树莓派 book worm 安装记录

3B插上网线

sudo raspian-config //开启ssh


sudo apt install python3-pip
sudo apt install python3-opencv
sudo apt install python3-dbus
sudo apt install python3-bluetooth
sudo apt install python3-serial

sudo apt install vim

sudo apt install lrzsz


pip install wiringpi --break-system-wide

开启orthocone 自启动

sudo chmod 777 /etc/init.d/orthocone
sudo update-rc.d orthocone defaults
sudo systemctl enable orthocone.service

sudo chmod 777 recon.out

还需要重新安装opencv_core opencv_imgproc  opencv_highgui

用opencv4  重新编译 recon   
超级辛苦

多余service 取消自启动

sudo update-rc.d xxx remove

或者

sudo systemctl disable xxx.service

移除windows 字符
vim
:set ff=unix

修改i2c 波特率
config.txt
dtparam=i2c_arm=on,i2c_arm_baudrate=100000

python3.9 后 timer.isAlive() 改为 timer.is_live()

树莓派系统

虚拟键盘

https://blog.csdn.net/weixin_37613240/article/details/131095728

https://blog.csdn.net/weixin_46235937/article/details/128966933

https://blog.csdn.net/qq_27865227/article/details/127394944

https://blog.csdn.net/m0_46324847/article/details/128962898

新版树莓派摄像头驱动